将参数作为数组传递

时间:2014-04-25 10:10:33

标签: javascript

我使用了preload()方法:

preload('img-1','img-2',...,'img-num')

哪个工作正常。但是现在我想将所有参数放在一个数组中,所以现在就这样:

var myArray = ['img-1','img-2',...,'img-num'];

preload(myArray)

但显然这是错误的方法,因为preload是加载由comman分隔的参数而不是组合所有参数的数组。

所以,我很想知道是否有事要做?

1 个答案:

答案 0 :(得分:4)

您可以使用preload.apply(适用于Function对象,Function.prototype.apply),这可以将数据数据展开为参数,就像这样

preload.apply(this, myArray);

例如,

function printer(first, second, third) {
    console.log(first, second, third);
}

printer(1, 2, 3);
# 1 2 3
printer([1, 2, 3]);
# [1, 2, 3] undefined undefined
printer.apply(this, [1, 2, 3]);
# 1 2 3

由于参数的数量可能不同,人们通常会使用arguments特殊对象。

您可以在函数中将参数列表作为数组获取,如此

function printer() {
    console.log(Array.prototype.slice.call(arguments));
}

printer(1, 2, 3);
# [ 1, 2, 3 ]
printer([1, 2, 3]);
# [ [ 1, 2, 3 ] ]
printer.apply(this, [1, 2, 3]);
# [ 1, 2, 3 ]