以下两个不同的代码片段在我看来是等价的:
var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";
和
var myObject = {'A': 'Athens', 'B':'Berlin'};
因为它们的行为相同,而且 typeof(myArray) == typeof(myObjects)
(都产生“object”)。
这些变体之间有什么区别吗?
最佳答案
几乎 javascript 中的所有东西都是一个对象,所以你可以“滥用”一个 Array通过在其上设置任意属性来创建对象。这should be considered harmful尽管。数组用于数字索引数据 - 对于非数字键,使用对象。
这是一个更具体的例子,说明为什么非数字键不“适合”数组:
var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";
alert(myArray.length);
这不会显示“2”,而是“0”——实际上,没有元素被添加到数组中,只是一些新属性被添加到数组对象中。
关于javascript - 为什么我可以将命名属性添加到数组中,就好像它是一个对象一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874205/