2012-11-30 65 views
-4

讓我們說我有這種形式的JavaScript對象:閱讀的JavaScript對象屬性

var myJsObject = 
{ 
    A.b: 1 
    A.c: 2 
} 

我怎麼讓我們說A.c的價值?

我想:

var value = myJsObject['A.c'] 

但是,這給了我錯誤Uncaught TypeError: Cannot set property 'A.c' of undefined

謝謝

+0

你應該張貼一個實際的例子。你顯示的錯誤與你應該得到你的例子的錯誤不符。 –

+1

你在這裏有什麼是不是有效的JavaScript作爲A.b不能成爲一個屬性名稱,至少沒有引號周圍。 – jfriend00

回答

4

你並不需要「對象」的關鍵字,應該引用屬性。這工作在我的控制檯:

var myJsObject = { 'A.b': 1, 'A.c': 2 }; 
var value = myJsObject['A.c']; 
console.log(value); // 2 
+0

我知道這是一個錯字,但我仍然遇到同樣的問題 – user765368

+0

您是否引用了像我的示例中的「A.b」和「A.c」屬性? – gpojd

+0

@gpojd - 您的屬性之間缺少逗號 – bPratik

1

你不能鏈式點符號。這應該是工作:

var myJsObject = { 
    A: { 
     b: 1, 
     c: 2 
    } 
} 

或者,如果你想有一個屬性名稱,如A.b,它需要被引用,如果名稱中包含特殊字符:

var myJsObject = 
{ 
    'A b': 1, 
    'A.c': 2 
} 
+1

是的,你不能鏈接它們,但是使用'myJsObject ['A.c']'的OP仍然有效。 – bPratik

+0

@bPratik是的,我同意,但我不確定,如果OP想要爲'A'創建多個屬性,或者只是使用名爲'A.b'和'A.c'的屬性。 – Teemu

1

代碼

var myJsObject = 
{ 
    A.b: 1 
} 

會產生語法錯誤,因爲句點必須加引號,因爲它們在語言中有特殊含義。 JavaScript解釋器讀取A.b作爲嘗試從A對象獲取b屬性,但它期望標識符名稱而不是操作。考慮一個類似的例子:

var myJsObject = 
{ 
    foo-bar: 1 
} 

這裏,連字符是讀取減法運算符,並且還會產生語法錯誤。

相反,使用帶引號的屬性名稱:(。此外,你的代碼丟失,我在加入爲好"A.b": 1行之後逗號)

var myJsObject = 
{ 
    "A.b": 1, 
    "A.c": 2 
}