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

わかった。ここには3倍のFunction.prototype.bind関数があり、その(簡略化された)コードは

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

部分適用が多い、より機能的なスタイルで省略します:bind fn ( context)->fncontext 。

それで、それは何をしますか?バインド(バインド)を取得bind.call(bind, bind)またはバインドしました。これを展開してbindbindをバインドしましょう。今、それにいくつかの引数を提供した場合はどうなりますか?

バインドバインド(バインド)(fn)(コンテキスト)

バインドバインド(fn)(コンテキスト)

バインドfn(コンテキスト)

fnコンテキスト

これが私たちです。これをいくつかの変数に割り当てて、結果をより明確にすることができます。

bindbind = bind bind(bind)

bindfn = bindbind any fn)//bind fn

contextbindfn = bindfn any コンテキスト)//fnコンテキスト

結果=contextbindfnany ( args//fn context(args)

于 2012-11-22T02:52:45.483 に答える