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 に答える