温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Why can I add named properties to an array as if it were an object?
arrays javascript object javascript-objects

javascript - 为什么我可以像数组一样将命名属性添加到数组中?

发布于 2020-03-27 16:01:09

以下两个不同的代码片段似乎与我等效:

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";

var myObject = {'A': 'Athens', 'B':'Berlin'};

因为它们的行为都相同,并且typeof(myArray) == typeof(myObjects)(两者都产生“对象”)。

这些变体之间有什么区别吗?

查看更多

查看更多

提问者
prinzdezibel
被浏览
65
Paul Dixon 2009-05-17 17:44

实际上,javascript中的所有内容都是对象,因此您可以通过Array对象上设置任意属性来“滥用” Array对象。但是,这应该被认为是有害的数组用于数字索引数据-对于非数字键,请使用对象。

下面是一个更具体的示例,为什么非数字键不“适合”数组:

var myArray = Array();
myArray['A'] = "Athens";
myArray['B'] = "Berlin";

alert(myArray.length);

这不会显示“ 2”,而是显示“ 0”-实际上,没有将任何元素添加到数组,仅将一些新属性添加到了数组对象。