我正在实例化一个构建关联数组的对象。在实例化之后,我想添加对象成员的属性,但是当我尝试这样做时我收到了错误。
所以这是对象,它解析了一堆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 :(得分:4)
为对象分配属性不是递归的,即它不会自动为您创建对象,因此您必须单独分配每个属性。
试试这个......
supertree.scenes[i] = { 'index': i };
答案 1 :(得分:0)
您无法将属性分配给尚不存在的对象。使用此:
supertree.scenes[i] = {};
supertree.scenes[i].index = i;