0

我正在为我的 js 文件使用对象结构,并希望能够将其中一个属性(它是一个数组)分配给其他属性之一:

AvGen = {

    theBody: {
        bodies: [
            fooObj,
            foo2Obj,   // <--- assign this property...
            foo3Obj
        ],
        bodyColor: '#DB6EDB',
        currBodyNr: 1,
        currBodyObj: AvGen.theBody.bodies[1]    // <--- ...to this property

// ... rest of the code

但是,当尝试这样做时,我收到以下错误消息:

Uncaught ReferenceError: AvGen is not defined

如果我删除“AvGen”,它会说没有定义“theBody”。我怎样才能做到这一点?

4

3 回答 3

1

在较新的浏览器中,您可以使用 getter:

AvGen = {

    theBody: {
        bodies: [
            1,
            2,
            3
        ],
        bodyColor: '#DB6EDB',
        currBodyNr: 1,
        get currBodyObj() {
           return AvGen.theBody.bodies[AvGen.theBody.currBodyNr];
        }
    }
}

console.log(AvGen.theBody.currBodyObj); //2

小提琴

但是您也可以只使用方法而不是属性:

currBodyNr: 1,
currBodyObj: function() {
   return AvGen.theBody.bodies[AvGen.theBody.currBodyNr];
}

//...

console.log(AvGen.theBody.currBodyObj()); //2
于 2013-06-18T20:46:21.793 回答
0

Avgen尚未在该行上实例化。相反,请执行以下操作:

AvGen = {};
AvGen.theBody = {};
AvGen.theBody.bodies = [fooObj, foo2Obj, foo3Obj];
AvGen.theBody.bodyColor = '#DB6EDB';
AvGen.theBody.currBodyNr = 1;
AvGen.theBody.currBodyObj = AvGen.theBody.bodies[1];
// etc..
于 2013-06-18T20:43:22.667 回答
0

您必须首先初始化对象AvGen,以便它获取设置值,bodies然后通过函数分配您想要的值this.currBodyObj

于 2013-06-18T20:33:04.507 回答