2012-02-26 73 views
0

我在對象中有一個對象。它看起來像這樣。對象內的對象使用JavaScript添加屬性

var myLib = { 
    object1: {} 
} 

我的基本問題是,我想最終這樣。所以我想動態地做到這一點,直到運行時纔會知道屬性或附加對象。

var myLib = { 
    object1: ({"A1":({"Color":"Blue", 
         "height":50}) 
    }) 
} 

從閱讀這裏堆棧溢出 我知道,我可以通過簡單地去這樣創建一個對象中的對象:

myLib.Object1["A1"] = "Something" 

但這並不生產什麼我要找的。

我試過這個語法,我知道錯了,但基本上

mylib.Object1["A1"].["color"]="Blue"; 

所以基本上這裏是個問題。我想在「mylib.Object」下創建對象「A1」,並立即將屬性color =「blue」添加到「A1」。我需要爲其他幾個屬性做這件事,但如果我能弄清楚如何做到這一點,我可以解決其餘的問題。我怎樣才能完成這項任務?

請不要jQuery。只是簡單的舊JavaScript是我正在尋找。**

一旦我創建對象和屬性,我會想象我可以使用for循環來循環通過該對象的屬性。像這樣:

for(key in mylib.Object1["A1"]){} 

對不對?

+2

它是'[「A1」] [「color」] =「藍色」'你在追求什麼? – pimvdb 2012-02-26 17:00:02

+0

似乎是它的,但如果我嘗試這個我得到一個錯誤myLib.Object1 [「A1」] [「color」] =「藍色」;錯誤是myLib.Object1「A1」未定義。 – Miguel 2012-02-26 17:05:56

回答

4

您可以從頭開始創建這一切是這樣的:

var myLib = {}; 
myLib.object1 = {}; 

// assuming you get this value from your code somewhere 
var x = "A1"; 

myLib.object1[x] = {Color: "Blue", height: 50}; 

或者,如果所有值都在變量:

var myLib = {}; 
myLib.object1 = {}; 

// assuming you get this value from your code somewhere 
var x = "A1"; 

var colorProp = "Color"; 
var colorPropValue = "Blue"; 
var heightProp = "height"; 
var heightPropValue = 50; 
myLib.object1[x] = {}; // create empty object so we can then add properties to it 
myLib.object1[x][colorProp] = colorPropValue; // add one property 
myLib.object1[x][heightProp] = heightPropValue; // add another property 

這些語法創建相同的結果:

myLib.object1.A1 = {}; 

var x = "A1"; 
myLib.object1[x] = {}; 

第一個只能在編寫代碼時知道屬性名稱以及屬性名稱爲fol時使用低估了JavaScript標識符的適當規則。第二種可以隨時使用,但通常在屬性名稱位於變量中或者它不遵循JavaScript標識符的規則時使用(例如,它以數字開頭)。

+0

絕對天才謝謝花時間向我解釋這一點。這真棒。我有一個概念和語法問題,你解決了他們兩個。謝謝你,先生! – Miguel 2012-02-26 17:17:25