为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-07-01 09:47:36
为什么我可以将命名的属性添加到数组中,就好像它是一个对象一样?以下两个不同的代码片段似乎与我等效:var myArray = Array();myArray['A'] = "Athens";myArray['B'] = "Berlin";和var myObject = {'A': 'Athens', 'B':'Berlin'};因为他们的行为都是一样的,而且typeof(myArray) == typeof(myObjects)(两者都会产生‘Object’)。这些变体之间有什么区别吗?
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

实际上,javascript中的所有内容都是一个对象,因此您可以“滥用”列阵对象,方法是在其上设置任意属性。这,这个应该被认为是有害的尽管如此。数组用于数字索引数据-对于非数字键,请使用对象。

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

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

这不会显示‘2’,但‘0’-实际上,没有元素被添加到数组中,只是添加到数组对象中的一些新属性。


查看完整回答
反对 回复 2019-07-01
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

在JS中,数组是对象,只是稍微修改一下(还有几个函数)。

职能如下:

concat
every   
filer
forEach
join
indexOf
lastIndexOf
map
pop
push
reverse
shift
slice
some
sort
splice
toSource
toString
unshift
valueOf


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 553 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信