为什么 length 属性 属于数组对象?
Why is length property owned by an array object?
还有其他示例,但为了简单起见,我们以 length
属性 为例:
[].hasOwnProperty("length")
//==> true
正如我们所知,数组的 length
属性 驻留在 Array.prototype
上,因此只需沿着原型链向上移动即可从任何数组实例轻松访问它,为什么要将其复制下来?与浏览器中的具体实现有关系吗? (上面的代码示例在 chrome 控制台中执行)。甚至 MDN 也明确指出:“...方法和属性不会在原型链中从一个对象复制到另一个对象。它们是通过沿着链向上移动来访问的...”
很简单:因为每个数组实例都有不同的 .length
值。
.length
属性 本来可以是一个 getter/setter ,它会从共享原型对象继承,但 JavaScript 的初始设计带有数据 属性 随元素 creation/removal.
自动更新
length
property resides on Array.prototype
存在 Array.prototype.length
属性,但只是因为 Array.prototype
is itself an array。请注意,它的值为 0
- 您不希望它被继承到所有数组。
还有其他示例,但为了简单起见,我们以 length
属性 为例:
[].hasOwnProperty("length")
//==> true
正如我们所知,数组的 length
属性 驻留在 Array.prototype
上,因此只需沿着原型链向上移动即可从任何数组实例轻松访问它,为什么要将其复制下来?与浏览器中的具体实现有关系吗? (上面的代码示例在 chrome 控制台中执行)。甚至 MDN 也明确指出:“...方法和属性不会在原型链中从一个对象复制到另一个对象。它们是通过沿着链向上移动来访问的...”
很简单:因为每个数组实例都有不同的 .length
值。
.length
属性 本来可以是一个 getter/setter ,它会从共享原型对象继承,但 JavaScript 的初始设计带有数据 属性 随元素 creation/removal.
length
property resides onArray.prototype
存在 Array.prototype.length
属性,但只是因为 Array.prototype
is itself an array。请注意,它的值为 0
- 您不希望它被继承到所有数组。