了解数组中的对象以及长度特性如何在对象上工作

Understanding objects in a array and how the length property works on objects

本文关键字:对象 工作 数组 了解      更新时间:2023-09-26

看看下面的代码:

var a = new Array(); // or just []
a[0] = 0
a['one'] = 1;
a['two'] = 2;
a['three'] = 3;
for (var k in a) {
    if (a.hasOwnProperty(k)) {
        alert('key is: ' + k + ', value is: ' + a[k]);
    }
}
alert(a.length); // 1 is printed

现在,我得到了以下对正在打印的1的解释;

奇怪的是,据报道长度为1,但却打印了四个键。这是因为我们同时操作数组元素和底层对象。

底层对象?对不起,我不太明白,有人能解释一下吗?这个底层对象是什么?有人能强调一下吗?请注意,我的问题不是直接为什么要打印1,而是问一个稍微宽泛和困难的问题,那就是底层对象是什么?

发现示例HERE

数组的length属性只是数组中最大整数索引之后的下一个整数。

例如,如果您声明以下数组:

var arr = [];
arr[1234] = 'Hello world';

那么,arr.length将等于1235。

添加任何对象属性都不会影响它:

arr['one'] = '1';
arr['two'] = '2';
arr['three'] = '3';
console.log(arr.length); // still 1235

此外,不将此类属性分配给数组是正确的。

同样重要的是,如果你现在决定JSON.stringify这个阵列,你会得到:

[null, null, null, null, ... 1250 more nulls ..., "Hello world"]

onetwothree