从另一个属性到达对象属性

时间:2013-06-18 20:27:00

标签: javascript object properties

我正在为我的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'。我怎么能做到这一点?

3 个答案:

答案 0 :(得分: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

<强> FIDDLE

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

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

//...

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

答案 1 :(得分:0)

首先必须初始化对象AvGen,使其获取bodies的设定值,然后通过函数指定您想要的this.currBodyObj

答案 2 :(得分: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..