javascript / jquery - добавление свойств к созданному объекту - PullRequest
0 голосов
/ 23 августа 2011

Я создаю экземпляр объекта, который создает ассоциативный массив. После того, как он создан, я хочу добавить свойства членов объекта, но я получаю сообщение об ошибке, когда пытаюсь это сделать.

Итак, это объект, который анализирует кучу 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')

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

Назначение свойств объектам не является рекурсивным, т. Е. Оно не создает объекты автоматически для вас, поэтому вы должны назначать каждое свойство индивидуально.

Попробуйте это ...

supertree.scenes[i] = { 'index': i };
0 голосов
/ 23 августа 2011

Вы не можете присвоить свойство объекту, который еще не существует.Используйте это:

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