Explain bindbind() function

后端 未结 1 1723
情深已故
情深已故 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)
提交回复
热议问题