【问题标题】:Why is `Object.length === 1` in JavaScript as part of browsers?为什么 JavaScript 中的 `Object.length === 1` 是浏览器的一部分?
【发布时间】:2015-03-27 13:28:16
【问题描述】:

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

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

Object's constructor function lists the argument as optional.

document.write(Object.length);

那么为什么/如何计算?

【问题讨论】:

  • 规范要求:es5.github.io/#x15.2.3
  • 我不认为原生函数的字符串表示(我假设你的意思是Object.toString() 所以一些等价物)可以反映它所需要的参数数量。

标签: javascript


【解决方案1】:

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

来自 MDN:

length 是函数对象的一个​​属性,表示有多少个 函数期望的参数,即形式参数的数量。 这个数字不包括其余参数。

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

另外,在Object函数的具体情况下,the ES spec explicitly mandates it should have a length of 1

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多