Explain bindbind() function

后端 未结 1 1728
情深已故
情深已故 2020-12-03 06:17

Can someone explain this function?

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

I understand the result it produce

1条回答
  •  一整个雨季
    2020-12-03 06:40

    OK. We have three times the Function.prototype.bind function here, whose (simplified) code

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

    I will abbreviate in a more functional style with lots of partial application: bindfn(context) -> fncontext.

    So what does it do? You have got bind.call(bind, bind) or bindbind(bind). Let's expand this to bindbind. What if we now supplied some arguments to it?

    bindbind(bind) (fn) (context)

    bindbind(fn) (context)

    bindfn(context)

    fncontext

    Here we are. We can assign this to some variables to make the result clearer:

    bindbind = bindbind(bind)

    bindfn = bindbindanything(fn) // bindfn

    contextbindfn = bindfnanything(context) // fncontext

    result = contextbindfnanything(args) // fncontext(args)

    0 讨论(0)
提交回复
热议问题