Function.prototype.bind与参数对象

说我有这样简单的情况:

const f = function(){ const fn = f.bind(null, arguments); } 

我试图实现一个“重试”机制 – 这个代码根据静态分析检查出来,似乎是Function.prototype.bind的签名,但我的问题是:

arguments将作为f的第一个参数被应用,还是将被展开,如f.apply(null, arguments) ? 我无法find这个在线的例子。

.bind.apply类似,而不是.apply – 第二个参数将被视为第二个参数。 所以在你的例子中:

f(1,2,3)将产生fn([1,2,3])

arguments将作为f的第一个parameter passing。 而且,如果你用更多的参数调用绑定函数,那么这些参数将会在绑定的函数之后(即不能覆盖第一个参数)。

在这里阅读更多

是的,所以Function.prototype.bindFunction.prototype.bind具有相似的签名

所以你需要做的:

 fn.bind(null, ...arguments); 

要么

 fn.bind(null, ...Array.from(arguments));