将一个函数的所有参数传递给另一个函数?(javascript)
如何将一个函数的所有参数传递给另一个函数将一个函数的所有参数传递给另一个函数?(javascript),javascript,Javascript,如何将一个函数的所有参数传递给另一个函数 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'); // t
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]) 使用
函数.原型。
,如下所示:
b.apply(this, arguments);
现在,是一个类似数组的对象,除了它的n索引属性外,它还有一些其他属性(如)。因此,您可能应该使用Array.prototype.
将对象转换为一个简单的参数数组(尽管这两种方法都适用于现代环境)
另请参见:
Function.prototype.
为什么不将它们作为单个对象传递?使用单个对象作为参数的优点是
- 秩序是不必要的。与必须知道它是否是接收集合中的第一个、第二个、第三个、对象中的参数不同,它们就在那里。需要时给他们打电话
- 你从不担心有多少人通过了考试。您可以发送一个包含许多属性的对象,并且在调用者和被调用者之间只传递一个参数
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'
})
当浏览器javascript在内部提供相同的功能时,又何必担心呢。此外,可以使用slice和splice函数进行修改:我认为命名参数总体上是一种更好的范例,但在JavaScript中,内置方式是编号的,至少在ES5中是这样。因此,简单地按原样传递参数比包装和展开对象更直观。当然,有些情况下可能需要使用对象技术。@Beejor,我相信这在2012年就得到了回答,而且已经选择了一个更好的答案。@JosephDeeamer是的,我刚刚发布了一个关于你回答的问题“为什么不…”的答案。即使一个问题已经有年历史了,人们仍然会阅读它,并可能从额外的讨论或回答中受益。例如,即使你的答案没有被选中,它对于特殊情况仍然有很大的价值。如果你没有在2012年发回,即使后来有人发回,也会给这个页面增加价值。:-)
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'
})