如何轻松到达嵌套对象中的属性?

时间:2013-08-06 02:39:57

标签: javascript javascript-objects

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

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关键字或其他方式有什么方法吗?

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

谢谢。

2 个答案:

答案 0 :(得分:3)

您是否尝试过您的解决方案?它会导致语法错误。当你试图定义它时,Obj没有被定义,即使它是你不会得到最新的obj值,因为你试图在运行时将它设置为数组的当前值。

见这里:

syntax error example

您希望将该属性设置为一个函数,以便用户在访问该函数时可以获取当前总数。

像这样:

totalPoint: function(){
   return calc(Obj.a.state.teams.starter.handPoints)
}

working example

如果您想缩短参考,可以为其中某些部分添加别名。例如

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); 
                    }
                }
            }
        }
    }
};

这是jsFiddle example