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

javascript 中的关联数组是一个错误吗?

javascript 中的关联数组是一个错误吗?

守着星空守着你 2021-06-30 06:13:22
我们知道 JavaScript 不支持带有命名索引的数组。(关联数组)但是当我们在 javascript 中声明关联数组时,它不会抛出错误并且它的工作原理令人惊讶。let arr = [];arr.name = 'John';arr.lastName = 'Doe';arr.age = 46;let obj = {name: 'John', lastName: 'Doe', age: 46};时console.log('arr'),会显示:[name: "John", lastName: "Doe", age: 46] //Shown with a special array sign   age: 46   lastName: "Doe"   name: "John"   length: 0   __proto__: Array(0) //Shown Array Not Object和:console.log(arr instanceof Array);  //trueconsole.log(arr instanceof Object); //trueconsole.log(obj instanceof Array);  //falseconsole.log(obj instanceof Object); //true如您所见,Javascript 显示带有数组特定符号的关联数组。[](括号)但它把这个数组当作一个对象,因为一些数组方法和属性(如length)会产生不正确的结果。另外,如果 JavaScript 使用这种类型的数组作为对象,为什么不使用对象的特殊标记?{}(大括号)简而言之,这是JavaScript解释器中的错误还是一种能力?
查看完整描述

2 回答

?
白衣染霜花

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

在 Javascript 中,数组不仅被“视为”一个对象——它是一个对象。正如你已经看到的,因为arr instanceof Object是真的。

因此,与所有对象一样,您可以为数组分配属性。

length是数组的一个特殊属性,表示数组元素的个数。由于在您的示例arr中没有元素,因此其length属性正确为 0。对象不会自动具有特殊length属性。


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

添加回答

举报

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