假设我有以下代码(完全没用,我知道)
function add( a, b, c, d ) {
alert(a+b+c+d);
}
function proxy() {
add.apply(window, arguments);
}
proxy(1,2,3,4);
基本上,我们知道apply期望将数组作为第二个参数,但是我们也知道
arguments
不是适当的数组。该代码按预期工作,因此可以肯定地说我可以将任何类似数组的对象作为apply()
中的第二个参数传递吗?以下内容也将起作用(至少在Chrome中):
function proxy() {
add.apply(window, {
0: arguments[0],
1: arguments[1],
2: arguments[2],
3: arguments[3],
length: 4
});
}
更新:似乎我的第二个代码块在IE arguments)有效。
错误是
Array or arguments object expected
,因此我们可以得出结论,传递arguments
总是安全的,而在oldIE中传递类似数组的对象则不安全。 最佳答案
假设ECMAScript 5.1:是。根据ECMA-262,10.6,arguments对象具有15.3.4.3(length
)所需的Function.prototype.apply
和index属性。
关于javascript - 将 'arguments'传递给 'apply()'是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16543692/