このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Reflect.deleteProperty()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.

Reflect.deleteProperty() は静的メソッドで、delete 演算子と同様に実装されていますが、関数として動作します。オブジェクトからプロパティを削除します。

試してみましょう

const object = {
  foo: 42,
};

Reflect.deleteProperty(object, "foo");

console.log(object.foo);
// 予想される結果: undefined

const array = [1, 2, 3, 4, 5];
Reflect.deleteProperty(array, "3");

console.log(array);
// 予想される結果: Array [1, 2, 3, <1 empty slot>, 5]

構文

js
Reflect.deleteProperty(target, propertyKey)

引数

target

プロパティを定義する対象のオブジェクトです。

propertyKey

定義または修正をするプロパティ名です。

返値

プロパティの定義に成功したかどうかを示す論理値です。

例外

TypeError

target がオブジェクトではなかった場合。

解説

Reflect.deleteProperty() は、delete 演算子の反射的意味づけを提供します。つまり、Reflect.deleteProperty(target, propertyKey) は意味的に以下と同等です。

js
delete target.propertyKey;

ごく基本的なレベルでは、プロパティの削除は論理値を返します(プロキシーハンドラーの場合と同様です)。Reflect.deleteProperty() は結果を直接返しますが、delete は結果が false の場合、厳格モード では TypeError が発生します。厳格モードでない場合は、deleteReflect.deleteProperty() の動作は同じです。

Reflect.deleteProperty() は、target[[Delete]] オブジェクト内部メソッド を呼び出します。

Reflect.deleteProperty() の使用

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

const arr = [1, 2, 3, 4, 5];
Reflect.deleteProperty(arr, "3"); // true
console.log(arr); // [1, 2, 3, <1 empty slot>, 5]

// そのようなプロパティが存在しない場合に true を返す
Reflect.deleteProperty({}, "foo"); // true

// プロパティが設定不可の場合、false を返す
Reflect.deleteProperty(Object.freeze({ foo: 1 }), "foo"); // false

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-reflect.deleteproperty

ブラウザーの互換性

関連情報