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.bind
与Function.prototype.bind
具有相似的签名
所以你需要做的:
fn.bind(null, ...arguments);
要么
fn.bind(null, ...Array.from(arguments));