带参数对象的Function.prototype.bind

时间:2017-11-08 02:02:36

标签: javascript node.js

说我有这种简单的情况:

const f = function(){

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

}

我正在尝试实现“重试”机制 - 此代码根据静态分析检出并且似乎是Function.prototype.bind的签名,但我的问题是:

arguments仅作为f的第一个参数应用,还是会展开,如f.apply(null, arguments)?我无法在网上找到这个例子。

3 个答案:

答案 0 :(得分:2)

arguments将作为f的第一个参数传递。此外,如果您随后使用更多参数调用绑定函数,那么这些参数将在绑定函数之后(即,您无法覆盖该第一个参数)。

了解更多here

答案 1 :(得分:2)

.bind的工作方式类似于.call,而不是.apply - 第二个参数将被视为第二个参数。所以在你的例子中:

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

答案 2 :(得分:-1)

是的,Function.prototype.bind与[{1}}

的签名相似

所以你需要这样做:

Function.prototype.call

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