Javascript,闭包中的 return 函数如何与外部函数连接

Javascript, how return functions in closures are concatenated with the outer function

function func() {
  return this == myObject;
}

var boundFunc = func.bind(myObject, "arg1", "arg2");
boundFunc("arg3", "arg4");

Function.prototype.bind = function() {
  var fn = this;
  var args = Array.prototype.slice.call(arguments);
  var object = args.shift();

  return function() {

    var allArgs = args.concat(Array.prototype.slice.call(arguments))
    return fn.apply(object, allArgs);
  };

}

上面的代码片段需要一些帮助。我想我明白了,除了一件事。

我不明白这是怎么回事:

return function() {

  var allArgs = args.concat(Array.prototype.slice.call(arguments))
  return fn.apply(object, allArgs);
};

指的是这个:

boundFunc("arg3", "arg4");

我知道当调用 bind 时 args 获取参数(myObject、arg1、arg2)。但我不明白 return function() 是如何引用 boundfunc 以便将 arg3arg4args 连接起来的。那有意义吗?任何人都可以为我阐明这个主题吗?

如果反汇编代码,会发生这种情况:

var boundFunc = function() {
    var allArgs = ["arg1", "arg2"].concat([].slice.call(arguments))
    return func.apply(myObject, allArgs);
};

保留 .bind() 中的参数并返回一个代理函数,该函数将调用 func 并结合先前的参数和调用中传递的新参数。