1. ホーム
  2. javascript

[解決済み] オブジェクトリテラル/イニシャライザーの自己参照

2022-03-20 03:22:05

質問

JavaScriptで以下のようなものを動作させる方法はないでしょうか?

var foo = {
    a: 5,
    b: 6,
    c: this.a + this.b  // Doesn't work
};

現在の形では、このコードは明らかに参照エラーを投げています。 this を参照していない。 foo . しかし オブジェクト・リテラルのプロパティの値を、先に宣言された他のプロパティに依存させる方法はないのでしょうか?

どのように解決するのですか?

さて、私がお伝えできるのは ゲッター :

var foo = {
  a: 5,
  b: 6,
  get c() {
    return this.a + this.b;
  }
}

console.log(foo.c) // 11

これは ECMAScript 第 5 版の仕様で導入された構文拡張で、この構文はほとんどのモダンブラウザ (IE9 を含む) でサポートされています。