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が返ります。
プロパティの削除を禁止する方法
オブジェクトのプロパティのプロパティ属性configurableがfalseである場合、 delete演算子を使ってもプロパティを削除することはできません。
オブジェクトリテラルを使って作成されたプロパティは、deleteで削除できるのは、 プロパティ属性configurableがデフォルトでtrueであるためです。
プロパティの削除を禁止するためには、Object.defineProperty()関数を用いて、プロパティ属性のconfigurableをfalseに設定します。
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 モードではない場合、エラーにならず単に削除されないだけです。