LoginSignup
0
0

More than 1 year has passed since last update.

ES6以後のEnhanced Object Literals(強化されたオブジェクトリテラル)をマスターする

Posted at

Enhanced Object Literals

皆さんもご存知の通りES6(ES2015)以降、JavaScriptに数多くの新しい機能、構文が追加されました。代表的なものとしては変数let、アロー関数、Promise、スプレッド演算子、分割代入、クラス、For of、デフォルト引数などがありますが、今回はその中でもEnhanced Object Literalsについて備忘録も兼ねて簡単にまとめてみました。

Enhanced Object Literalとは?

直訳すると「強化されたオブジェクトの記法」といったところでしょうか。ES5以前のオブジェクトリテラルと比較して、以下の3つのオブジェクトリテラルが追加されています。

  • 他のオブジェクトをオブジェクトに挿入する際のキーの省略
  • メソッドの省略記法
  • キーに動的な値の設定

他のオブジェクトをオブジェクトに挿入する際のキーの省略

オブジェクトを持つ変数を他方のオブジェクトに同名のkeyとともに格納する際の省略記法です。

// 旧
let fruits = [
  orange: 100,
  peach: 300,
  apple: 120
];

let price = {
  milk: 150,
  rice: 2000,
  fruits: fruits
};


// 新
let fruits = {
  orange: 100,
  peach: 300,
  apple: 120
};

let price = {
  milk: 150,
  rice: 2000,
  fruits // fruits: fruitsと等しい。キーを省略できる。
};

従来の記法ではfruits: fruitsというように変数名と同名のプロパティをキーとして記載する必要がありました。
しかし、ES6以後では以下の通り同名のキーを省略して書くことができます。
なお、当然ながら別名のキーで変数を格納する場合はキーを省略することはできません。fruitsPrice: fruitsのようにキーを明記します。

メソッドの省略記法

// 旧
let price = {
  milk: 150,
  rice: 2000,
  fruits,
  order: function (product) {
    return `${product} has been ordered!`
  }
};


// 新
let price = {
  milk: 150,
  rice: 2000,
  fruits,
  order(product) { // : functionを省略
    return `${product} has been ordered!`
  }
};

上記のようにオブジェクト内に関数(メソッド)が存在した場合、従来の記法ではプロパティ名: function() {}というように関数式をvalueとして渡してあげる必要がありました。しかし、ES6以後の新記法ではセミコロンとfunctionを省略することが可能です。

キーに動的な値の設定

// 旧
let fruits = {
  orange: 100,
  peach: 300,
  apple: 120
};


// 新
let fruitsStock = [orange, peach, apple];

let fruits = {
  [fruitsStock[0]]: 100, // orange
  [fruitsStock[1]]: 300, // peach
  [`fruits ${1+2}`]: 120 // fruits 3
};

従来の記法ではプロパティは静的な値しか設定できませんでした。しかしES6以後の記法ではプロパティ名に変数名やテンプレートリテラルを使い動的な値を設定できます。プロパティ名を動的な値にする際にはプロパティを角括弧[]で囲ってあげる必要があります。

まとめ

ES6で追加された他の機能たちと比べるとだいぶ影の薄いEnhanced Object Literalsですが、使いこなせば多少コードを綺麗に書くことができるのではないでしょうか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0