ove*_*nge 5 javascript javascript-objects ecmascript-5
在function类型对象中,length属性表示类型对象所需的参数数量function。例如,在下面的可视化中,对象objectlength中的字段的值为。FunctionArray1
在上面的可视化中,lengthfield 也是objectobject 类型的成员Array.prototype,其值为0。
MDN说:
Array.prototype.length反映数组中元素的数量。
cars遵循下面的&bikes数组中的定义,
var cars = new Array("Saab", "Volvo", "BMW");
var bikes = ["Honda", "Yamaha"];
Run Code Online (Sandbox Code Playgroud)
cars.__proto__.length&bikes.__proto__.length还是0。
多个数组对象( cars, bikes) 不能共享与 中的属性相同的length属性值。lengthArray.prototype
1)
根据MDN,这是一个正确的定义吗?
2)
length如果不是,字段中的含义是什么Array.prototype?
MDN 说:
Array.prototype.length反映数组中元素的数量。这是一个正确的定义吗?
有点,是的。.length与数组相关的三个不同属性:
Array.length。正如您所说,它是所有函数都具有的实例(“自己的”)属性,并且与数组无关。arr.length,其中arr是一个数组实例(例如arr = ['ex', 'ample'])。每个数组都有这个特殊属性,其作用有点像 getter/setter,自动确定对象具有的最高数组索引属性。Array.prototype.length是 #2 的特殊情况,因为Array.prototype它本身只是一个数组对象 - 默认情况下为空,因此.length == 0.MDN 有点不准确,因为它将实例属性与从其文档页面中的原型继承的属性混合在一起。正如您的图表正确可视化的那样,所有cars,bikes和Array.prototype对象确实都有自己的.length属性和自己的值(当然,更改一个对象不会更改其他对象)。
那么Array.prototype.length有什么目的呢?实际上并不多,因为它通常被继承自 的数组对象的自己的属性所遮蔽Array.prototype。因此,除了因为规范说这Array.prototype是一个数组实例并且具有该属性而存在之外,它还可以作为继承自的普通(非数组)对象的合理默认.length值- 但这种情况非常罕见。Array.prototype
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |