ウェブエンジニア問題集
第6章

オブジェクト操作 — プロパティアクセスとObjectの静的メソッド

4
この章の目次開く

この章は現在執筆中です。公開までしばらくお待ちください。

この章で扱う範囲:プロパティアクセス(ドット記法・ブラケット記法)、動的キー、プロパティの存在確認(in / hasOwn)、Object.keys / Object.values / Object.entries / Object.assign / Object.freeze などの静的メソッド。 なお 分割代入・スプレッド構文分割代入とスプレッド構文(第9章)にまとめて扱います。

プロパティアクセス — ドット記法とブラケット記法

オブジェクトのプロパティにアクセスする方法は、大きく分けて ドット記法ブラケット記法 の2つです。

const user = {
  name: '太郎',
  age: 25,
};
 
console.log(user.name); // "太郎"
console.log(user['name']); // "太郎"
js

ふつうの固定名なら user.name のようなドット記法が読みやすいです。一方で、プロパティ名を変数や式で組み立てたい場合は、obj[key] のように ブラケット記法 を使います。

const user = {
  name: '太郎',
  age: 25,
};
 
const key = 'name';
 
console.log(user[key]); // "太郎"
console.log(user.key); // undefined("key" という名前のプロパティを探してしまう)
js
変数に入っている値をプロパティ名として使いたいときは、ドット記法ではなくブラケット記法を使います。

動的キー — テンプレートリテラルをキーにする

オブジェクトを作るときも、キー名を変数やテンプレートリテラルで組み立てられます。この場合は、オブジェクトリテラル内で [式] を使います。これは 算出プロパティ名 と呼ばれる書き方です。

const id = 10;
 
const scores = {
  [`user_${id}`]: 80,
};
 
console.log(scores.user_10); // 80
console.log(scores[`user_${id}`]); // 80
js

user_${id} のようなテンプレートリテラルは文字列を作る式です。その式を「キー名」として評価してほしいので、[] で囲みます。

const id = 10;
 
const bad = {
  `user_${id}`: 80, // ❌ 構文エラー
};
 
const good = {
  [`user_${id}`]: 80, // ⭕ "user_10" というキーになる
};
js

読み出すときも同じです。キーを式で組み立てるなら obj[式]、固定名で書けるなら obj.key を使います。

const userId = 10;
const scores = {
  user_10: 80,
  user_11: 95,
};
 
console.log(scores[`user_${userId}`]); // 80
js

参考リンク