我有一个嵌套对象。这是:
var Obj = {
a: {
state: {
started: false,
players: [],
hand: 0,
totalHand: 0,
teams: {
starter: {
name: "",
handPoints: [],
totalPoint: calc(Obj.a.state.teams.starter.handPoints)
}
}
}
}
};
如您所见,我需要使用handPoints
值来设置totalPoint
。我是否必须这样称呼:
calc(Obj.a.state.teams.starter.handPoints)
使用this
关键字或其他方式有什么方法吗?
如果我有一个更嵌套的对象怎么办?这对我来说很奇怪。
谢谢。
答案 0 :(得分:3)
您是否尝试过您的解决方案?它会导致语法错误。当你试图定义它时,Obj没有被定义,即使它是你不会得到最新的obj值,因为你试图在运行时将它设置为数组的当前值。
见这里:
您希望将该属性设置为一个函数,以便用户在访问该函数时可以获取当前总数。
像这样:
totalPoint: function(){
return calc(Obj.a.state.teams.starter.handPoints)
}
如果您想缩短参考,可以为其中某些部分添加别名。例如
totalPoint: function(){
var myStarter = Obj.a.state.teams.starter;
return calc(myStarter.handPoints)
}
答案 1 :(得分:1)
您可以将变量totalPoint
变为函数并使用this
。
var Obj = {
a: {
state: {
started: false,
players: [],
hand: 0,
totalHand: 0,
teams: {
starter: {
name: "",
handPoints: [ 5,6 ],
totalPoints: function() {
return calc(this.handPoints);
}
}
}
}
}
};