Javascript 从另一个属性访问对象属性

Javascript 从另一个属性访问对象属性,javascript,object,properties,Javascript,Object,Properties,我正在为我的js文件使用对象结构,并希望能够将其中一个属性(即数组)分配给其他属性之一: AvGen = { theBody: { bodies: [ fooObj, foo2Obj, // <--- assign this property... foo3Obj ], bodyColor: '#DB6EDB', currBodyNr: 1,

我正在为我的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

如果我删除“AvGen”,它会说“theBody”没有定义。如何实现这一点?

您必须首先初始化对象
AvGen
,以便它获取
实体的设置值,然后通过一个函数指定要
的对象。currBodyObj
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..

在较新的浏览器中,可以使用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

x=foo2Obj,然后currBodyObj:x。。。
currBodyNr: 1,
currBodyObj: function() {
   return AvGen.theBody.bodies[AvGen.theBody.currBodyNr];
}

//...

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