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