我可以将属性设置为JS数组,那么原始数组现在的数据类型是什么?



我定义了一个数组

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

数组本身就是对象,一旦你给它添加了一个属性,它就变成了一个带有命名属性的对象。

最新更新