4

私はこれを試しています

var a = {
    "a" : "Hey",
    "b" : this.a + "!"
};

console.log(a.b);

==>"undefined!"

しかし、これを使えば問題なく動作します。

var a = {};
a.a = "haha";
a.b = a.a + "!";

console.log(a.b);

==>"haha!" 

最初の方法を使用して機能させるにはどうすればよいですか?

4

3 に答える 3

2

Ecmascript エディション 5 では、オブジェクトにいくつかの優れた機能が追加されました: セッターとゲッターです。最新のブラウザーでは、getter メソッドを使用して必要な結果を得ることができます。

var a = {
    "a" : "Hey",
    get b(){ return this.a + "!" },
    set c(x){ this.a = x}
};

a.bこれで正しい結果が得られますHey!

c のセッター関数により、通常の代入a.c = "foo"が実際に ! に設定さa.afooます。

于 2013-07-02T07:59:11.990 に答える