6

有人可以解释这个功能吗?

var bindbind = Function.prototype.bind.bind(Function.prototype.bind);

我理解它产生的结果:

var bindedContextFunc = bindbind(function)(context);
bindedContextFunc(args);

但不了解创建此功能的过程,我的意思是部分bind(Function.prototype.bind)

4

1 回答 1

4

好的。我们这里有三倍的Function.prototype.bind函数,其(简化)代码

function bind(context) {
    var fn = this;
    return function() {
        return fn.apply(context, arguments);
    }
}

我将使用更多的部分应用程序以更实用的样式进行缩写: bind fn (context) -> fn context

那么它有什么作用呢?你已经得到bind.call(bind, bind)或绑定绑定(bind)。让我们将其扩展为绑定bind。如果我们现在给它提供一些论据呢?

绑定绑定(bind) (fn) (上下文)

绑定绑定(fn)(上下文)

绑定fn(上下文)

上下文_

我们到了。我们可以将其分配给一些变量以使结果更清晰:

bindbind = 绑定绑定(绑定)

bindfn = 绑定任何东西(fn)//绑定fn

contextbindfn = bindfn任何东西(上下文)//fn上下文

结果 = contextbindfn任何东西(args) //fn上下文(args)

于 2012-11-22T02:52:45.483 回答