在javascript中调用已绑定函数时,如何取消移位额外参数而不是推送它

在javascript中调用已绑定函数时,如何取消移位额外参数而不是推送它,javascript,arguments,bind,Javascript,Arguments,Bind,当我有一个已经绑定了一些参数的函数,然后我使用带有额外参数的.call时,这些额外参数将推送到该函数的参数对象中(添加到末尾) 在这种情况下,当函数已与某些参数绑定时,是否有可能将这些额外参数取消移位(添加到开头)到arguments对象中?您可以采用不同的方法与函数绑定以交换参数 函数解析(){} 函数拒绝(){} 函数async(){ log(参数); } 功能交换(a、b、c、d){ 返回此(c、d、a、b); } var-bound=swap.bind(异步,'hello','worl

当我有一个已经绑定了一些参数的函数,然后我使用带有额外参数的
.call
时,这些额外参数将推送到该函数的
参数对象中(添加到末尾)


在这种情况下,当函数已与某些参数绑定时,是否有可能将这些额外参数取消移位(添加到开头)到
arguments
对象中?

您可以采用不同的方法与函数绑定以交换参数

函数解析(){}
函数拒绝(){}
函数async(){
log(参数);
}
功能交换(a、b、c、d){
返回此(c、d、a、b);
}
var-bound=swap.bind(异步,'hello','world');

调用({},解析,拒绝)
@NinaScholz不,不是,
日志:[“你好”,“世界”,ƒ,ƒ]
我知道这是
的默认行为。call
,但我正在寻找一些解决方案来改变参数的顺序。你可以看看这里:顺便说一句,你永远不需要传递promise
resolve
reject
函数。让
async
返回自己创建的承诺,而不是回调。你可能想问一个关于你的实际问题的新问题。问题是我没有权限访问绑定函数的参数,除了Chrome的
[[BoundArgs]]
函数的属性what不是一个好的解决方案。我只能访问已经绑定的函数,然后我想
。用额外的参数调用它,所以这些额外的参数放在
参数
对象的开头。
var bound = async.bind({},'hello','world');
bound.call({},resolve,reject);

function async(){
  console.log(arguments) //0:'hello', 1:'world', 2:resolve, 3:reject
  //what I expect: 0:resolve, 1:reject, 2:'hello', 3:'world'
}
function resolve(){}
function reject(){}