如何将一个函数的所有参数传递给另一个函数
function a(){
arguments.length;// this is 1
// how do I pass any parameter function a receives into another function
b(what to put here?); // say pass all parameters function a receives to function b
}
a('asdf'); // this is okay
因此,如果函数a接收X个参数,则每个参数以相同的顺序传递给函数b。所以如果a(“1”,“2”); ,b(“1”,“2”);,如果a(“1”,2,[3]); ,b(“1”,2,[3]);。
答案 0 :(得分:5)
使用Function.prototype.apply(thisArg[, argsArray])
,如下所示:
b.apply(this, arguments);
现在,arguments
是一个类似于数组的对象,除了它的n-index属性外,还有一些其他属性(如callee
)。所以,您可能应该使用Array.prototype.slice()
将对象转换为一个简单的参数数组(尽管其中任何一个都适用于现代环境)。
b.apply(this, Array.prototype.slice.call(arguments));
另请参阅:Function.prototype.call()
答案 1 :(得分:2)
为什么不将它们作为单个对象传递?使用单个对象作为参数的优点是
function foo(data){
data.param1; //is foo
data.param2; //is bar
data.param3; //is baz
//send params to bar
bar(data);
}
function bar(info){
info.param1; //is foo
info.param2; //is bar
info.param3; //is baz
}
//call function foo and pass object with parameters
foo({
param1 : 'foo',
param2 : 'bar',
param3 : 'baz'
})