JavaScript/Reflect/deleteProperty

カテゴリ:Book:JavaScript#Reflect/deleteProperty%20

Reflect.deleteProperty() は、オブジェクトからプロパティを削除するメソッドです。このメソッドは、delete 演算子と同様の機能を提供しますが、関数として呼び出すことができます[1]

構文

Reflect.deleteProperty(target, propertyKey)
  • target: プロパティを削除する対象のオブジェクト。
  • propertyKey: 削除するプロパティのキー(名前)。

オブジェクトからプロパティを削除するプログラム

以下のプログラムは、Reflect.deleteProperty() を使用してオブジェクトからプロパティを削除します。

const obj = { x: 1, y: 2 };
console.log(Reflect.deleteProperty(obj, 'x')); // true
console.log(obj); // { y: 2 }

このプログラムでは、Reflect.deleteProperty() を使用して obj オブジェクトから x プロパティを削除しています。削除に成功すると true が返され、削除後のオブジェクトには x プロパティが存在しなくなります。

削除できないプロパティを削除しようとするプログラム

以下のプログラムは、Reflect.deleteProperty() を使用して削除できないプロパティを削除しようとします。

const obj = {};
Object.defineProperty(obj, 'x', { configurable: false });
console.log(Reflect.deleteProperty(obj, 'x')); // false
console.log(obj); // { x: undefined }

このプログラムでは、Reflect.deleteProperty() を使用して configurable: false に設定されたプロパティを削除しようとしています。削除できないプロパティの場合は false が返され、プロパティは削除されません。

delete 演算子との比較

以下のプログラムは、Reflect.deleteProperty()delete 演算子を比較します。

const obj = { x: 1, y: 2 };
console.log(delete obj.x); // true
console.log(Reflect.deleteProperty(obj, 'y')); // true
console.log(obj); // {}

このプログラムでは、delete 演算子と [[../deleteProperty()</code> の両方を使用してプロパティを削除しています。どちらも同じ結果を生じますが、<code>Reflect.deleteProperty|Reflect.deleteProperty|Reflect.deleteProperty() の両方を使用してプロパティを削除しています。どちらも同じ結果を生じますが、Reflect.deleteProperty()]] は関数として呼び出すことができるため、プログラム的に扱いやすいという利点があります。

注意点

  • 戻り値: 削除に成功した場合は true、失除できなかった場合は false を返します。
  • 削除できないプロパティ: configurable: false に設定されたプロパティは削除できません。
  • 非オブジェクト: target が非オブジェクト(例: nullundefined)の場合、TypeError が発生します。

脚註

  1. これは、プログラム的にオブジェクトからプロパティを削除するために使用されます。

外部リンク

カテゴリ:Book:JavaScript#Reflect/deleteProperty%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension