2013-01-31 146 views
1

我已經建立了與下面類似的JavaScript對象:無法訪問對象的子屬性。

「someObject」 : { 
    「A」 : { 「id」 : 「323klj」, 「name」 : 「subObject1」, 「value」 : 「0」 } 
    「B」 : { 「id」 : 「63sdf」, 「name」 : 「subObjectB」, 「value」 : 「9」 } 
} 

我試圖訪問子對象的「值」屬性。但是,當我像他們那樣訪問它們時

console.log(someObject.A.value) 

結果是未定義的。

如果我嘗試輸出以下到控制檯就是這樣的(一個接一個行)

console.log(someObject) 
console.log(someObject.A) 
console.log(someObject.A.value) 

在控制檯中,我將看到以下內容:

- 第一行:someObject將顯示如預期的所有子對象和屬性完整

- 第二行:我會看到子對象的,但「價值」屬性缺失

- 第三行:未定義。

我的問題是有人有什麼想法可能會使這種情況發生?我很難解決這個問題,我不明白這怎麼可能。我知道這應該在正常情況下工作。僅供參考:這是我使用jQuery Mobile的一個更大的骨幹應用程序的一部分。這可能與這些框架之一有關嗎? (實際的代碼太複雜了,不能粘貼在這裏,我只是想舉一個例子來說明發生了什麼)。

+3

對象是怎樣的生成?屬性如何設置?是否可以通過Ajax填充「值」,並且您正在嘗試訪問*之前的屬性*設置?一些控制檯有一種評估對象的奇怪方式,所以你不應該相信每個輸出。 –

+0

感謝您的建議Felix – Occam

回答

2

這個工作對我來說:

var someObject = { 
    A : { id : "323klj", name : "subObject1", value : "0" }, 
    B : { id : "63sdf", name : "subObjectB", value : "9" } 
} 
console.log(someObject.A.value); //returns 0 
console.log(someObject.B.value); //returns 9 

注:複製粘貼文本,我不得不改變了雙引號,在瀏覽器中,他們顯示爲「」所以我改變他們「

+0

感謝您查看w3jimmy,我相當確信代碼是有效的,只是我的應用程序出了問題。奇怪的引語是由於我編寫了一個文本編輯器寫出了這個問題。 – Occam

1

嗯,我最終使用了一種解決方法,所以我討厭讓這個人有腰部時間,並將其標記爲答案,但仍然是相當令我費解的是,我正在發生什麼事...