underscore(lodash) bind 源码疑惑
源码版本是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的时候为什么还要把之前的参数链接上去呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
:[1]
此处的arguments时函数A的实际传入参数:[2]
此处的arguments时函数B的实际传入参数,将args和函数B的实际传入参数合并作为原始传入参数-func-的调用参数,context作为上下文作用为函数的柯里化,如下面的例子:
args
是预绑定参数,实际调用时可能还会传入额外的参数,所以要加到一起。