簡體   English   中英

Javascript - 對象:如何訪問嵌套對象?

[英]Javascript - Objects: How To Access Nested Objects?

我檢查了 SO 和 Google 的每一個問題,但無濟於事,這就是我創建副本的原因,因為很明顯,我的情況不同,因為沒有一個答案有效。

首先,我不明白為什么我不能簡單地通過使用. 符號如下: myObject.level1.level2.level3whichIsAObject ,它返回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

這里發生了什么? 為什么我不能簡單地訪問東西,其次,我該怎么做呢?

最奇怪的部分是,如果我將原始 object 作為全局存儲在控制台中,並且我在代碼中執行相同的操作:

在此處輸入圖像描述 ...有用。

這是我(沒有)得到的錯誤:

 const myObject = { attachment: { handle: 'attachment', slug: 'Images', state: { success: true, data: { activated: false, info: { demo: 'demo-1', component: 'attachment', }, success: true, } } }, widgets: { handle: 'widgets', slug: 'Widgets', state: { success: true, data: { activated: false, info: { demo: 'demo-1', component: 'widgets', }, success: true, } } }, }; for (const key in myObject) { console.log(myObject[key].state); }

在這個演示中,它可以工作,除了我的代碼,它是 1: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) }

試試這個代碼:

for (let key in myMainOjbect) {
    const objectData = myMainOjbect[key];
    console.log(objectData.state)
}

const objectData = objectData[key]; console.log(myMainOjbect[key].state)不一樣

我不明白為什么我不能簡單地訪問 object 中的 object

你可以。 有關示例,請參見下面的代碼段:

 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM