2011-08-22 4 views
0

나는 연관 배열을 만드는 객체를 인스턴스화하려고합니다. 인스턴스화 된 후에 객체의 멤버에 속성을 추가하려고하지만 그렇게하려고하면 오류가 발생합니다.javascript/jquery - 인스턴스화 된 객체에 속성 추가

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

내가 객체 인스턴스화 할 때 :

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

을 내가 할 수없는

그래서이 XML의 무리를 분석하고 장면과 차량의 배열을 구축 객체이며, 그것에 속성을 추가하십시오. 당신이 볼 수 있듯이

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; 
관련 문제