1 | var result = fun.bind(thisArg[, arg1[, arg2[, ...]]]) |
bind返回一个新的函数,这个函数要绑定的this对象指向第一个参数,后面的参数是传入新函数的参数。
这个函数的功能和fun函数的功能一样。所以,上面的bind函数可以等价于:1
result(newArg1, newArg2...) = thisArg.fun(newArg1, newArg2...)
1)科里化的目的1
2
3把func(arg1, arg2, arg3...)类型的函数
转换成
func(arg1)(arg2)(arg3)(...)类型
2)科里化的返回值
所以科里化的返回值仍然是一个函数,这样才能继续执行后面的参数(arg2)(arg3)(…)
3)科里化的定义
将函数与其参数的一个子集绑定起来后返回个新函数。
所以要绑定,就需要bind方法
4)科里化的实现1
2
3
4
5
6
7var currying = function(fn) {
var args = [].slice.call(arguments, 1);
return function() {
var newArgs = args.concat([].slice.call(arguments));
return fn.apply(null, newArgs);
};
};