我遍历了SO和Google的每个问题,但都无济于事,这就是为什么我要创建重复项的原因,因为显然,由于没有答案,我的情况有所不同。
首先,我不明白为什么我不能仅使用.
这样的符号来简单地访问对象内的对象:myObject.level1.level2.level3whichIsAObject
,它返回{{1} }。我的结构是:
undefined
首先,我循环浏览高层:
myMainOjbect = {
attachment: {
handle: 'attachment',
slug: 'Images',
state: {
success: true,
data: {
activated: false,
info: {
demo: 'demo-1',
component: 'attachment',
},
success: true,
}
}
}
},
..
向我展示了for(let key in myMainOjbect) {
const objectData = objectData[key];
}
子弹中的所有内容。但是,如果我想获取attachment
,它会突然返回为objectData.state
。
这是怎么回事?为什么我不能只是简单地访问事物,其次,我实际上该怎么做呢?
最奇怪的部分是,如果我将原始对象作为全局对象存储在控制台中,并且执行与代码相同的操作:
这是我(不是)得到的错误:
undefiend
在此演示中,它可以工作,除了我的代码(1:1复制)...无效。
答案 0 :(得分:1)
您正在访问不是来自循环的变量。
您需要这样做。
const myMainOjbect = {
attachment: {
handle: 'attachment',
slug: 'Images',
state: {
success: true,
data: {
activated: false,
info: {
demo: 'demo-1',
component: 'attachment',
},
success: true,
}
}
}
};
for (const key in myMainOjbect) {
console.log(myMainOjbect[key].state)
}
答案 1 :(得分:0)
尝试以下代码:
for (let key in myMainOjbect) {
const objectData = myMainOjbect[key];
console.log(objectData.state)
}
答案 2 :(得分:0)
const objectData = objectData[key];
与console.log(myMainOjbect[key].state)
我不明白为什么我不能只访问对象中的对象
可以。有关示例,请参见下面的代码段
:
const myMainOjbect = {
attachment: {
handle: 'attachment',
slug: 'Images',
state: {
success: true,
data: {
activated: false,
info: {
demo: 'demo-1',
component: 'attachment',
},
success: true,
}
}
}
};
const objectData = {};
for (const key in myMainOjbect) {
objectData[key] = myMainOjbect[key];
}
console.log(objectData);
console.log(objectData.attachment.state);
const myState = myMainOjbect.attachment.state;
console.log(myState);