解释bindbind()函数

时间:2012-11-22 02:06:37

标签: javascript functional-programming function-binding

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

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

我理解它产生的结果:

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

但是不理解创建这个函数的过程,我的意思是bind(Function.prototype.bind)

部分

1 个答案:

答案 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 fn

     

contextbindfn = bindfn 任何(context)// fn context

     

result = contextbindfn 任何(args)// fn context (args)