猿问

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

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

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

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

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

因为他们的行为都是一样的,而且typeof(myArray) == typeof(myObjects)(两者都会产生‘Object’)。

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


翻阅古今
浏览 591回答 3
3回答

动漫人物

实际上,javascript中的所有内容都是一个对象,因此您可以“滥用”列阵对象,方法是在其上设置任意属性。这,这个应该被认为是有害的尽管如此。数组用于数字索引数据-对于非数字键,请使用对象。下面是一个更具体的例子,说明为什么非数字键“不适合”数组:var myArray = Array();myArray['A'] = "Athens";myArray['B'] = "Berlin";alert(myArray.length);这不会显示‘2’,但‘0’-实际上,没有元素被添加到数组中,只是添加到数组对象中的一些新属性。

慕莱坞森

在JS中,数组是对象,只是稍微修改一下(还有几个函数)。职能如下:concat every    filer forEach join indexOf lastIndexOf map pop push reverse shift slice some sort splice toSource toString unshift valueOf
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答