“参数”成为对象的任何特殊原因

时间:2014-10-20 16:22:28

标签: javascript

所以今天我编码了,我觉得很奇怪

arguments.concat(someNumber);

给了我一个未定义函数的错误。起初我认为arguments出于性能原因可能是某种本机对象,但最后我发现它实际上是一个普通的javascript对象而不是数组或内部本机对象。我不知道是否有任何特殊原因。

1 个答案:

答案 0 :(得分:1)

arguments对象是特殊的("异国情调"在Harmony用语中),因为它维护了自己的数字属性和范围变量之间的实时连接:



function x(a) {
    arguments[0] = 42;
    document.write(a);
}

x(10)




要支持此功能,arguments需要从默认对象覆盖a lot of stuff。这就是为什么它是一个单独的类型。