JavaScript
es6
es2015
initialize
iterable

オブジェクト初期化時のプロパティ名に「式」を使う

More than 1 year has passed since last update.

プロパティ名に「式」を使う

JavaScript オブジェクトの初期化時のプロパティ名に「式」が使えます。

const propertyName = "my-key";
const object = { [propertyName]: "Hello, computed property name" };

object["my-key"]; // => "Hello, computed property name"

オブジェクト初期化内のプロパティ名のブラケットで囲んだ中身が、 として評価されます。よって以下のような定義も可能です。:

const object = { ["key" + 1]: 1 };
object.key1; // => 1

computed property names という名前で仕様化されています。
ES6 以上が必要ですが 2017 年のブラウザーなら問題なく使えるでしょう。

Iterable オブジェクトの構築

for 文などで列挙可能なオブジェクトを作る際に Symbol.iterator という定数で宣言されたキーを持たせる必要があります。
このときに computed property names が便利です。

var log = '';
const iterable = {
  [Symbol.iterator]: () => {
    var i = 0;
    return {next: () => new Object({value: i += 2, done: i > 10, }), };
  },
};
for (let x of iterable) log += x + ' ';
log; // => 2 4 6 8 10

参考情報