我使用了preload()方法:
preload('img-1','img-2',...,'img-num')
哪个工作正常。但是现在我想将所有参数放在一个数组中,所以现在就这样:
var myArray = ['img-1','img-2',...,'img-num'];
preload(myArray)
但显然这是错误的方法,因为preload是加载由comman分隔的参数而不是组合所有参数的数组。
所以,我很想知道是否有事要做?
答案 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 ]