javascript / jquery - 向实例化对象添加属性

时间:2011-08-22 22:53:24

标签: javascript jquery arrays object associative-array

我正在实例化一个构建关联数组的对象。在实例化之后,我想添加对象成员的属性,但是当我尝试这样做时我收到了错误。

所以这是对象,它解析了一堆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 个答案:

答案 0 :(得分:4)

为对象分配属性不是递归的,即它不会自动为您创建对象,因此您必须单独分配每个属性。

试试这个......

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

答案 1 :(得分:0)

您无法将属性分配给尚不存在的对象。使用此:

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