2013-07-29 162 views
1

是否可以将多个(未知)参数传递给函数而不使用Array通过函数将多个参数传递给函数

看看这个例子代码。

var test = function(/* Arguments */) { // Number 3 
    something(/* All Arguments Here */); 
}; 


var something = function(first, last, age) { // Number 2 
    alert(first + last + age); 
}; 


test('John', 'Smith', 50); // Number 1 

所以问题...

是否有可能通过从Number 1的参数Number 2 VIA Number 3,而不会影响它的使用方式。即。没有Array

这可能与OCD有关,但使用数组将会令人讨厌。

我试过什么吗? 没有,没有我能想到的,我可以尝试如此....我可以尝试什么?我已搜查.....

+1

好问题。这与你之后的情况类似吗? http://stackoverflow.com/questions/676721/calling-dynamic-function-with-dynamic-parameters-in-javascript – CodingIntrigue

+0

很难说现在,我正在研究它... – iConnor

+0

有你的目的是什么试图实现这样的事情? –

回答

4
 
var test = function() { // Number 3 
    something.apply(null, arguments); 
}; 


var something = function(first, last, age) { // Number 2 
    alert(first + last + age); 
}; 


test('John', 'Smith', 50); // Number 1 
+0

这是一个漂亮的小技巧,我总是使用'调用',所以它不会工作,但因为'应用'接受一个数组它。非常感谢你.. – iConnor

2

我已经找到了答案,这是借助于刀片出头

你会使用Array.prototype.slice.call(arguments)

var test = function(/* Arguments */) { 
    something.apply(null, Array.prototype.slice.call(arguments)); 
}; 


var something = function(first, last, age) { 
    alert(first + last + age); 
}; 


test('John', 'Smith', 50); 

Demo

这个例子是非常有用的如果你不想保留其余的论点,并且不想保留第一个供内部使用的东西,就像

var test = function(name) { 
    // Do something with name 
    something.apply(null, Array.prototype.slice.call(arguments, 1)); 
}; 
相关问题