Javascript 带有参数对象的Function.prototype.bind

Javascript 带有参数对象的Function.prototype.bind,javascript,node.js,Javascript,Node.js,假设我有一个简单的情况: const f = function(){ const fn = f.bind(null, arguments); } 我正在尝试实现一种“重试”机制-此代码根据静态分析进行检查,似乎是Function.prototype.bind的签名,但我的问题是: arguments是作为f的第一个参数应用,还是像在f.apply(null,arguments)中那样展开?我在网上找不到这个例子。参数将作为第一个参数传递给f。此外,如果随后使用更多参数调用绑定函数,则这些

假设我有一个简单的情况:

const f = function(){

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

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


arguments
是作为
f
的第一个参数应用,还是像在
f.apply(null,arguments)
中那样展开?我在网上找不到这个例子。

参数将作为第一个参数传递给
f
。此外,如果随后使用更多参数调用绑定函数,则这些参数将位于绑定函数之后(即,不能覆盖第一个参数)


阅读更多

。bind
的工作原理与
类似。call
,而不是
。apply
-第二个参数将被视为第二个参数。在你的例子中:


f(1,2,3)
将产生
fn([1,2,3])
是的,因此
函数.prototype.bind
函数.prototype.call具有类似的签名

所以你需要做:

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


const fn=f.bind(null,…参数)
使用
f.apply.bind(f,null,arguments)
f.bind.apply(f,[null,…arguments])
既然您在node.js上,就使用ES6<代码>函数f(…args){const fn=()=>f(…args);}
是的,我见过扩展运算符处理参数,但出于某种原因,我不得不执行
…数组。从(参数)
…不确定原因。@Bergi所讨论的示例是一种过于简化的情况,应该是这样的……想看到真实情况吗?:)链接似乎不好。
fn.bind(null, ...Array.from(arguments));