を使用してJavascriptでJavaのこの次の動作をエミュレートしようとしていmootools/Dojo
ます。クラスの静的変数値で初期化する必要があるインスタンス変数。
Class xyz {
public static static_constants {
TEST_CONST1 : "abc";
}
private a = static_constants.TEST_CONST1;
}
以下の方法で実行できますが、com.example.test.static_constants.TEST_CONST1
上書きしたため、もう存在しませんcom.example.test
。ただし、com.example.test.static_constants.TEST_CONST1
が以前に定義されていない場合、クラス内での割り当ては失敗します。
com.example.test.static_constants.TEST_CONST1 = "abc";
var com.example.test = new Class ({
a : com.example.test.static_constants.TEST_CONST1
});
動作する 2 つの回避策:
(I) - クラス内に別のインスタンス変数があります。静的な外部を使用する
var com.example.test = new Class ({
static_constants : {
TEST_CONST1 : "abc"
},
a : this.static_constants.TEST_CONST1
});
com.example.test.static_constants.TEST_CONST1 = "abc";
(II)クラスが定義された後に静的を再作成します
com.example.test.static_constants.TEST_CONST1 = "abc";
var com.example.test = new Class ({
a : com.example.test.static_constants.TEST_CONST1
});
com.example.test.static_constants.TEST_CONST1 = "abc";
私は何が欠けていますか?これらの方法はどちらも私にはきれいに見えません。これを行うには、よりクリーンな方法が必要です (extend などを使用しない - クラスがさらに壊れます)。