JavaScript オブジェクトのプロパティを削除する方法

プロパティを削除する方法

JavaScript のdelete演算子を使うと、オブジェクトのプロパティを削除することができます。

let film = {
    title: "Star Wars",
    director: "George Lucas",
};

console.log(film); //{title: "Star Wars", director: "Gerge Lucas"}

delete film.director;

console.log(film); //{title: "Star Wars"}

プロパティ削除後に、そのプロパティの読み取りを試みるとundefinedが返ります。

プロパティの削除を禁止する方法

オブジェクトのプロパティのプロパティ属性configurablefalseである場合、 delete演算子を使ってもプロパティを削除することはできません。

オブジェクトリテラルを使って作成されたプロパティは、deleteで削除できるのは、 プロパティ属性configurableがデフォルトでtrueであるためです。

プロパティの削除を禁止するためには、Object.defineProperty()関数を用いて、プロパティ属性のconfigurablefalseに設定します。

Object.defineProperty()関数の使い方については「オブジェクトのプロパティをひとつ設定する Object.defineProperty()」などを参考にしてください。

プロパティ属性を設定することによって、プロパティの削除を禁止するサンプルコードを紹介します。

'use strict';

let film = {
  title: 'Star Wars',
  director: 'George Lucas'
};

console.log(film); //{title: "Star Wars", director: "Gerge Lucas"}

Object.defineProperty(film, 'director', {
  configurable: false
});

delete film.director; // Error!

console.log(film); //{title: "Star Wars", director: "Gerge Lucas"}

この例ではプロパティfilm.directorの属性を設定して、削除できないようにしています。

また、strict モードで実行しているので、delete演算子で削除を試みたところで次のようなエラーが発生します。

strict モードではない場合、エラーにならず単に削除されないだけです。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 JavaScript 入門