有人可以解释这个功能吗?
var bindbind = Function.prototype.bind.bind(Function.prototype.bind);
我理解它产生的结果:
var bindedContextFunc = bindbind(function)(context);
bindedContextFunc(args);
但是不理解创建这个函数的过程,我的意思是bind(Function.prototype.bind)
答案 0 :(得分:4)
行。我们这里有Function.prototype.bind
函数的三倍,其(简化)代码
function bind(context) {
var fn = this;
return function() {
return fn.apply(context, arguments);
}
}
我将缩写为具有大量部分应用的更具功能性的风格:bind fn (context) - &gt; FN <子>上下文子>
那它是做什么用的?你有bind.call(bind, bind)
或绑定 bind (bind)。让我们将其展开以绑定 bind 。如果我们现在提供一些参数怎么办?
bind bind (bind)(fn)(context)
bind bind (fn)(context)
结合<子> FN 的子> (上下文)
FN <子>上下文子> 的
我们在这里。我们可以将它分配给一些变量以使结果更清晰:
bindbind = bind bind (bind)
bindfn = bindbind 任何(fn)
//
bind fncontextbindfn = bindfn 任何(context)
//
fn contextresult = contextbindfn 任何(args)
//
fn context (args)