标签:
curry函数是向一个函数传入部分的参数,从而产生一个新的函数,来达到对函数实现套用的操作
首先我们为所有的函数原型添加一个方法
Function.prototype.method = function(name,func) { this.prototype[name] = func; return this; }
在这里我们为Function的原型对象添加了一个method方法 ,这样当我们为函数原型添加方法的时候,就直接添加到Function.prototype中
也就是说我们可以直接这样
function add() { } Function.method(‘a‘,function(){ console.log(1); }); add.a();
在上面的例子中我们有一个声明的add()函数 我们为Function的原型对象添加了一个a方法 在控制台输出1 当我们进行这样的调用的时候add.a() 它会自动的在原型对象中查找a方法并且执行
下面是实现一个简单的实现curry函数的过程
Function.method(‘curry‘,function(){ var slice = Array.prototype.slice, args = slice.apply(arguments),//通过数组Array.prototype.slice方法对curry之前的参数arguments变成数组(arguments是一个类数组) that = this,//设置that = this 是为了curry后的函数想调用curry之前的作用域 resultbefore = 0; resultbefore = args[0] + args[1]; return function(c) { var result = resultbefore + c; console.log(result);
//在这里操作that的话,可以应用之前的作用域 apply(that) } });
function add() {
}
var add2 = add.curry(1,2);
add2(3);//输出6
上面的例子就实现了一个简单的函数curry化的过程
标签:
原文地址:http://www.cnblogs.com/tiantianwaigong/p/4653708.html