【发布时间】:2017-11-01 16:18:54
【问题描述】:
我正在研究这个 & 对象原型(你不知道 JS),我发现这个棘手的事情让我大吃一惊:
我创建了一个文字数组(JS 数组是对象)x = ['foo', 42, 'bar'] 并添加了一个名为 baz 的属性,例如 x.baz = 'baz'。然后,在 Chrome 开发控制台中,只需输入 x 将显示以下结果:> (3) ["foo", 42, "bar", baz: "baz"]。如果我展开“>”,数组的每个值都有自己的键,例如:
0: "foo"
1: 42
2: "bar"
baz: "baz"
我创建了什么样的 JS-object-monster? For 和 forEach 循环不计算 baz 属性并绕过它。
我们将不胜感激。谢谢!
【问题讨论】:
-
这可能只是 Chrome 控制台对序列化混合数组对象感到困惑的方式。您所做的是完全合法的,并且 forEach 正确地忽略了数组中的非标准自定义属性。
-
"并添加了一个属性
x.baz = 'baz'" - 好吧,DONT! -
这不是怪物。它只是一个对象,就像其他所有数组一样。您是否注意到它也有一个
.length属性(也没有迭代)?
标签: javascript arrays object properties javascript-objects