2011-08-22 39 views
0

我正在實例化一個構建關聯數組的對象。在實例化之後,我想添加對象成員的屬性,但是當我嘗試這樣做時出現錯誤。javascript/jquery - 將屬性添加到實例化對象

因此,這是對象,分析了一堆的XML,並建立了場景和車輛數組:

var supertree = { 
    scenes: {}, 
    vehicles: {}, 
    init: function() { 
     this.parseScenes(); 
     this.parseVehicles(); 
    }, 
... 

當我實例化對象:

supertree.init(); 
    supertree.ready = function() { 
     assignSpritePos(); 
    } 

我不能添加屬性。這就是我想要做的事:

function assignSpritePos(){ 


    var sceneCount = 0; 
    var sceneLength = Object.keys(supertree.scenes).length; 

    for (i=0; i< sceneLength; i++){ 
     //console.log(i); 
     supertree.scenes[i].index = i; 
     sceneCount++; 
    } 
} 

正如你所看到的,我真正想要做的是存儲在整體目標的一些永久性它的索引。我該怎麼做呢?我得到的錯誤是:

TypeError: 'undefined' is not an object (evaluating 'supertree.scenes[i].index = i') 
+0

PS - 與jQuery或關​​聯數組無關。 – RobG

回答

4

屬性分配給對象不是遞歸的,即它不會爲你自動的創建對象,所以你必須每個屬性單獨分配。

嘗試......

supertree.scenes[i] = { 'index': i }; 
+0

如果只有它可能是automagic ... – mheavers

0

可以將屬性不分配給對象尚不存在。使用這個:

supertree.scenes[i] = {}; 
supertree.scenes[i].index = i;