源码版本是0.1.0
function bind中的实现方式如下
bind: function(func, context){
if(!context) return func;
var args = _.toArray(arguments).slice(2); //出去 func,context的剩余可选参数
return function(){
var a = args.concat(_.toArray(arguments)); //为什么这里还需要加上所有的参数,有什么作用?
return func.apply(context, a);
};
}
最后apply的时候为什么还要把之前的参数链接上去呢?
:[1]
此处的arguments时函数A的实际传入参数:[2]
此处的arguments时函数B的实际传入参数,将args和函数B的实际传入参数合并作为原始传入参数-func-的调用参数,context作为上下文作用为函数的柯里化,如下面的例子: