是否可以从数组中向JavaScript函数发送可变数量的参数?
var arr = ['a','b','c']
var func = function()
{
// debug
alert(arguments.length);
//
for(arg in arguments)
alert(arg);
}
func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'
func(arr); // prints 1, then 'Array'
Run Code Online (Sandbox Code Playgroud)
我最近写了很多Python,这是一个很好的模式,能够接受varargs并发送它们.例如
def func(*args):
print len(args)
for i in args:
print i
func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d'
func(*arr) // prints 4 which is what I want, then 'a','b','c','d'
Run Code Online (Sandbox Code Playgroud)
在JavaScript中是否可以发送一个数组作为参数数组?
让我从一个具体的例子开始,我正在尝试做什么.
我在表单中有一系列年,月,日,小时,分钟,秒和毫秒组件[ 2008, 10, 8, 00, 16, 34, 254 ].我想使用以下标准构造函数实例化Date对象:
new Date(year, month, date [, hour, minute, second, millisecond ])
Run Code Online (Sandbox Code Playgroud)
如何将我的数组传递给此构造函数以获取新的Date实例?[ 更新:我的问题实际上超出了这个具体的例子.我想要内置JavaScript类的一般解决方案,如Date,Array,RegExp等,其构造函数超出我的范围.]
我正在尝试做类似以下的事情:
var comps = [ 2008, 10, 8, 00, 16, 34, 254 ];
var d = Date.prototype.constructor.apply(this, comps);
Run Code Online (Sandbox Code Playgroud)
我可能new在某处需要一个" ".上面只是返回当前时间,好像我已经调用了" (new Date()).toString()".我也承认我可能完全与上述方向错误:)
注意:请不要eval(),也不要逐个访问数组项.我很确定我应该可以按原样使用数组.
由于还没有人能够提出一个有效的答案,我已经做了更多的游戏.这是一个新发现.
我可以用自己的班级做到这一点:
function Foo(a, b) {
this.a = a;
this.b = b;
this.toString = function () {
return this.a + this.b;
};
}
var …Run Code Online (Sandbox Code Playgroud)