数组是JavaScript中的一种特殊类型对象。它有额外的方法和属性列表(例如.length
和.forEach
),并且它还有一组使用的索引(整数正数从零开始)。但与任何其他对象一样,它可以具有附加属性:
var arr = ['A', 'B'];
arr.extra = 'C';
console.log(arr[0], arr[1], arr.extra);
由于对象属性不仅可以通过点号访问,还可以通过方括号访问,因此您可以使用类似数组的语法访问任何属性:
var obj = { extra: 'D' };
console.log(obj['extra']);
console.log(arr['extra']);
你可以使用相同的语法来分配属性:
obj['x'] = 'E';
obj[33] = 'F';
arr['y'] = 'G';
arr[-1] = 'H';
console.log(obj.x, obj[33], arr.y, arr[-1]); // E F G H
你可以放心使用数字作为对象属性名,它会自动转换为字符串。
唯一的区别在于,当您使用正整数值作为属性名时,它们将被解释为数组索引。
var arr = [];
arr[0] = 'A';
arr[1] = 'B';
arr[-1] = 'C';
arr.forEach(value => console.log(value))
console.log(arr.length);
console.log( Object.keys(arr) );