在调用apply之前是否有必要将参数转换为Array?

时间:2012-10-01 20:12:26

标签: javascript arrays arguments apply

是否存在阻止我这样做的浏览器限制或任何其他问题:

fn.apply(this, arguments);

fn.apply(this, Array.prototype.slice.call(arguments));

我知道apply将“true”Array作为第二个参数,但传递参数集合似乎同样有效。或...?

2 个答案:

答案 0 :(得分:4)

根据MDN,它“调用具有给定值的函数和作为数组提供的参数(或像对象一样的数组)”。鉴于arguments是一个类似数组的对象,使用它不应该有任何限制。

事实上,description明确表示arguments是一个有效的参数。

答案 1 :(得分:0)

MDN上的支持为unknown

只知道Firefox接受Function.prototype.apply()的第二个参数的类似于对象的对象。在直接通过arguments之前我会谨慎行事。