我们知道 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); //true
console.log(arr instanceof Object); //true
console.log(obj instanceof Array); //false
console.log(obj instanceof Object); //true
如您所见,Javascript 显示带有数组特定符号的关联数组。[](括号)
但它把这个数组当作一个对象,因为一些数组方法和属性(如length)会产生不正确的结果。
另外,如果 JavaScript 使用这种类型的数组作为对象,为什么不使用对象的特殊标记?{}(大括号)
简而言之,这是JavaScript解释器中的错误还是一种能力?
白衣染霜花
相关分类