2011-07-24 126 views
7

我有两个功能的()和b(),两者都是可变参数的功能,让我们说,当我呼叫功能的()是这样的:在Javascript中使用可变参数函数调用可变参数函数?

a(arg0, arg1, arg2, arg3, ...., argn); 

那么函数B()将被内部称为以及一(),但没有一个()的参数列表中的第一个参数“arg0都”:

b(arg1, arg2, arg3, ...., argn); 

有什么办法呢?

+1

相关:http://stackoverflow.com/questions/960866/converting-the-arguments-object-to-an-array-in-javascript –

回答

20

每个JavaScript function实际上只是另一个“对象”(JavaScript的意义上的对象),并且带有一个apply方法(请参阅Mozilla's documentation)。因此,你可以做这样的事情....

b = function(some, parameter, list) { ... } 

a = function(some, longer, parameter, list) 
{ 
    // ... Do some work... 

    // Convert the arguments object into an array, throwing away the first element 
    var args = Array.prototype.slice.call(arguments, 1); 

    // Call b with the remaining arguments and current "this" 
    b.apply(this, args); 
} 
+0

酷,我刚刚做了一个快速测试,它工作正常。谢谢你的帮助! – Teiv