我定义了一个数组
let a = [4,5,6]
然后我给类似的
附加了一个属性a.stuff = 'hi'
由于某些原因,没有错误,如果我在html标签中字符串化,它不会显示stuff属性,但它会显示在浏览器控制台上。
现在是什么类型的数据?阵列还是某种混合体?这样做是好的做法吗?为什么stuff属性不显示在html标签中?
数组的对象属性和数组元素列表是分开的,数组的遍历和突变操作不能应用于这些命名属性。
let a = [4,5,6]
a.stuff = 'hi'
for (let el of a) {
console.log(el);
}
你总是可以自己使用typeof操作符找到它,你可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof。但在一般情况下,JS数组被认为是对象。还有一个对象,在尝试给它附加属性后。
它既是数组又是对象。只需使用控制台:
就可以看到这一点。console.log(a)
[4, 5, 6, stuff: 'hi']
0: 4
1: 5
2: 6
stuff: "hi"
length: 3
[[Prototype]]: Array(0)
console.log(a instanceof Array)
true
console.log(a instanceof Object)
true
注意,在JavaScript中数组是一个对象(查看这篇文章)。
始终是一个'object'。
let a = [4,5,6]
console.log('a:', a) // a: [4,5,6]
console.log('typeof a: ', typeof a); // typeof a: object
a.stuff = 'hi';
console.log('a:', a) // a: [4, 5, 6]
console.log('typeof a: ', typeof a); // typeof a: object
数组本身就是对象,一旦你给它添加了一个属性,它就变成了一个带有命名属性的对象。