Array.Prototype对象的长度属性-ES 5 [英] length property of Array.prototype object - ES 5

查看:19
本文介绍了Array.Prototype对象的长度属性-ES 5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

function类型对象中,length属性表示function类型对象预期的参数数量。例如,在下面的可视化中,Function对象、Array对象中的length字段具有值1

在上面的可视化中,length字段也是object类型ObjectArray.prototype的成员,值为0

MDN表示:

Array.prototype.length反映数组中的元素数量。

按照下面cars&;bikes数组中的此定义,

var cars = new Array("Saab", "Volvo", "BMW");
var bikes = ["Honda", "Yamaha"];

cars.__proto__.length&;bikes.__proto__.length仍然0

多个数组对象(carsbikes)不能共享相同的length属性值,因为length属性位于Array.prototype中。

1)

根据MDN,这是正确的定义吗?

2)

如果没有,Array.prototype中的length字段表示什么?

推荐答案

MDN说:

Array.prototype.length反映数组中的元素数。

这是正确的定义吗?

索尔塔,是的。有三个与数组相关的不同.length属性:

  • Array.length。如您所说,它是所有函数都具有的实例("OWN")属性,与数组无关。
  • arr.length,其中arr为数组实例(如arr = ['ex', 'ample'])。每个数组都有这个special property,它的作用有点像getter/setter,自动确定对象具有的最高数组索引属性。
  • Array.prototype.length是#2的特例,因为Array.prototype本身只是一个数组对象,默认为空,因此.length == 0
MDN有点不准确,因为它在文档页面中将实例属性与从原型继承的属性混合在一起。正如您的图表正确显示的那样,所有carsbikesArray.prototype对象都有自己的.length属性和自己的值(当然,更改其中一个不会更改其他值)。

那么Array.prototype.length有什么目的呢?实际上不是很多,因为它通常被继承自Array.prototype的数组对象自己的属性所隐藏。因此,除了因为规范说明Array.prototype是数组实例并且那些具有该属性的对象存在之外,它还可以作为从Array.prototype继承的普通(非数组)对象的合理默认值.length-尽管这种情况非常少见。

这篇关于Array.Prototype对象的长度属性-ES 5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆