現代的JavaScriptおれおれアドベントカレンダー2017 – 16日目
概要
{ foo: foo }
を { foo }
のように省略できます。
const name = 'Alice'; const obj = { name }; console.log(obj.name); // => "Alice"
使い方
値が入っている変数の名前とプロパティの名前が一致する場合、省略して書くことができます。
const name = 'Alice'; const obj1 = { name: name }; console.log(obj1.name); // => "Alice" const obj2 = { name }; console.log(obj2.name); // => "Alice"
混ぜて書く
コロン :
と値とを書く普通のやり方と一緒に使えます。
const data; const result = { data, date: Date.now(), };
関数の引数で
頑張って作った結果を突っ込んだ変数とか、仮引数でもらったやつをそのまま突っ込むこともできます。
function foo({ message }) { const date = Date.now(); bar({ data, message }); }
ちなみに関数の仮引数( foo()
のやつ)の方は「分割代入」の類です。別稿参照。
Vue.jsで
components
でよく使ってます。
const ThemeItem = require('./ThemeItem.vue') module.exports = { components: { ThemeItem, }, // ... };
その他
混ぜてかくと気持ち悪いような
ひとつのオブジェクトを作る場合はどちらかに統一して、 :
使う場合は省略できるものもしない方が良いかなあ。
const id = nanika.id; const status = { ... }; // なんか複雑なアレ const obj = { date: Date.now(), id, name: regularize(user.name), status, };
違うオブジェクトならファイル内で両方あって良いんだけど。
参考
- ECMAScript® 2017 Language Specification
- 12.2.6 Object Initializer
- 12.2.6.8 Runtime Semantics: PropertyDefinitionEvaluation
- オブジェクト初期化子 – JavaScript | MDN