为什么JavaScript中的`Object.length === 1`是浏览器的一部分?

时间:2015-03-27 13:28:16

标签: javascript

我正在对Angular中的某些内容进行故障排除,最终会检查Object.length。结果是1.它的字符串表示形式不显示任何参数。我知道第一个参数被使用了。

var obj = new Object({ a : 27 });

Object's constructor function lists the argument as optional.



document.write(Object.length);




那么为什么/如何计算?

1 个答案:

答案 0 :(得分:8)

函数的长度是声明的参数的数量,不包括任何rest参数

来自MDN:

  

length是函数对象的属性,表示有多少   函数期望的参数,即形式参数的数量。   此数字不包括rest参数。

There's exactly one for the Object constructor,可选的包装值。

此外,在Object函数的特定情况下,the ES spec explicitly mandates it should have a length of 1

  

除了内部属性和length属性(其值为1)

(对于所有采用rest参数的函数,似乎都这样做,例如ArrayfromCharCode

请注意,浏览器中本机函数的(implementation dependent)字符串表示不一定显示正式参数。