1

我有一个嵌套对象。这里是:

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关键字或其他东西吗?

如果我有一个更嵌套的对象怎么办?我觉得很奇怪。

谢谢你。

4

2 回答 2

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)
}
于 2013-08-06T02:54:48.847 回答
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); 
                    }
                }
            }
        }
    }
};

这是jsFiddle 示例

于 2013-08-06T03:00:46.580 回答