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

Dan*_*ite 4 javascript

我正在解决Angular中最终检查的问题Object.length.结果是1.它的字符串表示形式不显示任何参数.我知道第一个参数被使用了.

var obj = new Object({ a : 27 });
Run Code Online (Sandbox Code Playgroud)

Object的构造函数将参数列为可选参数.

document.write(Object.length);
Run Code Online (Sandbox Code Playgroud)

那么为什么/如何计算呢?

Den*_*ret 9

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

来自MDN:

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

Object构造函数中只有一个是可选的包装值.

此外,在Object函数的特定情况下,ES规范明确规定它的长度应为1:

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

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

请注意,浏览器中本机函数的(依赖实现)字符串表示不一定显示正式参数.