0

この割り当ての何が問題になっていますか?

base = {};
base.util = {
   varA : 3,
   varB : this.varA,
   show : function(){
      console.log(this.varB);
   }
};

this.varB は未定義です。どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

0

リテラルを宣言すると、の値はthisメソッド内の場合にのみオブジェクトになります。それ以外の場合、その値はリテラルが宣言されているコンテキストによって異なります。

目的を達成するには、次のようにコーディングする必要があります。

base = {};
base.util = {
   varA : 3,
   show : function(){
      // here, this refers to base.util
      console.log(this.varB);
   }
};
base.util.varB = base.util.varA;
base.util.show();
于 2013-01-23T14:28:13.677 に答える
0

オブジェクトの作成に短縮形を使用する場合、thisはグローバル スコープにあり、したがって を参照しwindowます。オブジェクトを作成した後、window.varAまたはが定義されているかどうかを確認してください。varA

于 2013-01-23T14:12:58.020 に答える