javascript - 为什么我可以将命名属性添加到数组中,就好像它是一个对象一样?

标签 javascript arrays object javascript-objects

以下两个不同的代码片段在我看来是等价的:

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/

相关文章:

php - 如何在循环时以及在数组内部插入数据

c# - 如何创建具有未在类中指定的成员的对象?

arrays - 在Powershell中,如何通过 “value”而不是 “reference”将对象存储在数组中?

javascript - 如何将单选按钮值存储为变量

javascript - event.preventDefault() 函数在 IE 中不起作用

javascript - 使用 D3JS 的 div 中的 img 和 p

javascript - 如何删除 .getScript() 加载的脚本

javascript - Sequelize : seed with associations

javascript - 嵌套在 Foreach 中的 Map 函数未按预期运行 为什么?

javascript - 如何在 js 数组中复制元素而不创建 "dependent elements"?