JavaScript 数组的本质
本质上,数组属于一种特殊的对象。
数组的特殊性体现在,它的键名是按次序排列的一组整数(0,1,2...)。
var arr = ["a", "b", "c"];
Object.keys(arr);
// ["0", "1", "2"]
JavaScript 语言规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串。
之所以可以用数值读取,是因为非字符串的键名会被转为字符串。
var a = [];
a[1.0] = 6;
a[1]; // 6
对象有两种读取成员的方法:
- 点结构:
object.key
arr.0
的写法不合法,是因为单独的数值不能作为标识符(identifier) - 方括号结构:
object[key]
用方括号arr[0]
可以,是因为方括号是运算符,可以接受数值
Length 属性
数组的 length
属性,返回数组的成员数量。
JavaScript 使用一个 32 位整数,保存数组的元素个数。
这意味着,数组成员最多只有 4294967295 个(2^32 - 1)个,也就是说 length
属性的最大值就是 4294967295。