繁体   English   中英

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

[英]I can set a property to a JS array so what kind of data type is the original array now?

我定义了一个数组

let a = [4,5,6]

然后我将属性附加到类似的

a.stuff = 'hi'

出于某种原因,没有错误,如果我在 html 标签中进行字符串化,它不会显示 stuff 属性,但会显示在浏览器控制台中。

现在是什么数据类型? 数组还是某种混合体? 以这种方式做事是好的做法吗? 为什么 stuff 属性不显示在 html 标签中?

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

数组的 object 属性和数组元素列表是分开的,数组的遍历和变异操作不能应用于这些命名属性。

 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 arrays 被认为是 object。在尝试为其附加属性后,还有 object。

它既是数组又是 Object。只需使用控制台即可看到:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM