函数的元

就是参数个数

例如:有两个参数的函数就是二元函数

什么是偏函数

在计算机科学中,偏函数叫做部分应用、局部应用,
指固定一个函数的一些参数,然后产生另一个更小元的函数。
是柯里化的一种用法。

目标

固定一个函数的一个或多个参数,将n元函数转成n-x元的函数

例子

  1. function add(a, b, c){
  2. return a + b;
  3. }
  4. add(1, 2);
  5. // 先传一部分参数,然后返回一个偏函数
  6. // 一定要先传一部分参数
  7. var add1 = partial(add, 1);
  8. // 再在后面把参数凑齐
  9. add1(2, 3);

在JavaScript中使用bind就可以实现这个功能

  1. function add(a, b, c, d){ // 一个四元函数
  2. return a + b + c + d;
  3. }
  4. var newAdd = add.bind(null, 1, 2); // 使用bind,并传入头两个参数,返回一个新的函数
  5. console.log(newAdd(3, 4)); // 最后补回后两个参数

使用apply封装一个partial函数

  1. function partial (x) {
  2. var _args = [].slice.call(arguments, 1);
  3. return function () {
  4. var newArgs = _args.concat([].slice.call(arguments));
  5. return x.apply(this, newArgs);
  6. }
  7. }
  8. // 或者在原型上添加
  9. Function.prototype.partial = function () {
  10. var _self = this,
  11. _args = [].slice.call(arguments);
  12. return function () {
  13. var newArgs = _args.concat([].slice.call(arguments));
  14. return _self.apply(this, newArgs);
  15. }
  16. }