2012-10-23 175 views
0

我的代碼:創建對象

for(var i in zones) { 
        var latlons1 = new google.maps.LatLng(zones[i].b.cen_x, zones[i].b.cen_y); 
        var latlons2 = new google.maps.LatLng(zones[i].b.max_x, zones[i].b.max_y); 
        var latlons3 = new google.maps.LatLng(zones[i].b.min_x, zones[i].b.min_y); 

        obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3} } //here object creation 

        console.log(obj1); 

       } 

什麼,我做錯了什麼?在對象創建時顯示CONSOL日誌錯誤。

+2

你沒有正確使用那個obj1行上的對象。 – jeremy

+0

感謝您的回答,請告訴我如何在此刻使用對象正確 – Dest

+0

如果您使用數字作爲索引,爲什麼不使用數組來啓動? – epascarello

回答

6

在JavaScript中創建對象字面值時,鍵和值由冒號分隔(:)。還要注意,如果你想使用動態鍵,那麼你需要使用方括號表示來設置和訪問這些屬性。所以這個:

obj1 = { zones[i].n = {1:latlons1,2:latlons2,3:latlons3} } 

應該變成:

obj1 = {}; 
obj1[zones[i].n] = { 
    1: latlons1, 
    2: latlons2, 
    3: latlons3 
}; 

如果你困惑,爲什麼你一定要做到這樣,是因爲密鑰不被評估。雖然你的意思是密鑰應該是zones[i].n所引用的值,但JavaScript會將其解釋爲密鑰應該是字符串字面值"zones[i].n",這顯然不是你想要的。

+0

是的,在這種情況下'zones [i] .n'將成爲包含具有三個道具的物體的頂層關鍵。 – boring

+0

感謝它的作品:) – Dest

0

要在對象內使用的對象,

//An object within an object 
    var NestedObject=new Object(); 
    NestedObject.one={ 
    sad:{ 
    d:"Add" 
    } 
    } 

我解決內Codecademy.com此使用實驗編碼; 謝謝你讓我分享我的答案!