Javascript数组作为属性名称

Ben*_*ate 6 javascript arrays

var myArray = new Array(); 
myArray['112'] = 0;
myArray.length
Run Code Online (Sandbox Code Playgroud)

为什么length113以上的样品?不应该'112'为数组添加对象属性并创建类似的东西myArray = {"112":0}?

除此之外,为什么长度为113而不是1?因为myArray实际上只包含1个值

Rob*_*obG 1

考虑这个简单的例子:

var aa = [];
aa[3] = 'three';
alert( aa.length // 4
  + '\n' + aa[2]    // undefined 
  + '\n' + aa.hasOwnProperty('2') // false
);
Run Code Online (Sandbox Code Playgroud)

数字3用于分配属性名称,但它被转换为字符串并用作标准属性名称(即字符串“3”)。

添加名为“3”的属性已创建一个属性,并将长度设置为 4,因为长度始终设置为比最大非负整数属性名称大 1。

没有创建其他属性,该数组是“稀疏”的,即它没有按顺序命名(编号)的成员。还可以使用for..in循环来查看只有一个属性。