将一个函数的所有参数传递给另一个函数?(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'
})