【发布时间】:2019-08-08 14:28:12
【问题描述】:
给定以下 sn-p:
let PARENT = {
CHILD_1: {
no: '1',
page: 3,
toString: function(){ return this.no; } },
CHILD_2: {
no: '2',
page: 4,
toString: function(){ return this.no; } },
}
console.log( JSON.stringify(PARENT, null, 1) )
for ( let c in PARENT ) {
// c is a CHILD_n object here, right?
console.log(c) // why 'CHILD_n' instead of 'no' from toString()?
console.log(c.page) // why undefined instead of 'page'?
}
我没有得到预期的结果:
- 为什么
c解析为CHILD_n属性的名称而不是toString()返回的值? - 为什么是
c.pageundefined? 1.c不是一个CHILD_n对象,它的属性可用吗? - 如何获得期望值?
【问题讨论】:
-
for ... in循环遍历 keys,for ... of循环遍历属性 values。 -
另外,
Object.entries()给出了一个包含[key, value]条目的二维数组。 -
@Pointy 所以,
for...in将对象视为key:value对的数组,对吧?如果是,这是否像PARENT[0][0]或PARENT['CHILD_1']['no']这样的传递产生'1'?
标签: javascript object properties nested for-in-loop