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 September 2016.

静的な Reflect.defineProperty() メソッドは、Object.defineProperty() と似ていますが、 Boolean を返します。

試してみましょう

const object1 = {};

if (Reflect.defineProperty(object1, "property1", { value: 42 })) {
  console.log("property1 created!");
  // Expected output: "property1 created!"
} else {
  console.log("problem creating property1");
}

console.log(object1.property1);
// Expected output: 42

構文

Reflect.defineProperty(target, propertyKey, attributes)

引数

target

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

propertyKey

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

attributes

定義または修正されているプロパティのための属性です。

返値

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

例外

TypeError: targetObject ではなかった場合。

解説

Reflect.defineProperty メソッドは、オブジェクトのプロパティの正確な追加や修正を行います。詳細は、類似メソッドの Object.defineProperty を参照してください。

メモ: Object.defineProperty はプロパティの定義が成功しなかった場合、オブジェクトを返すか TypeError を発生させます。しかし、Reflect.defineProperty は単純に、プロパティの定義が成功したかどうかを示す Boolean を返します。

Reflect.defineProperty() の使用

js
let obj = {};
Reflect.defineProperty(obj, "x", { value: 7 }); // true
obj.x; // 7

プロパティ定義が成功したかチェックする

成功してオブジェクトを返すか、失敗して TypeError をスローする Object.defineProperty を使う場合、プロパティの定義中に発生する何らかの例外をキャッチするには、try...catch ブロックを使用します。

Reflect.defineProperty は真偽値の成功ステータスを返すので、if...else ブロックを使用することができます。

js
if (Reflect.defineProperty(target, property, attributes)) {
  // success
} else {
  // failure
}

仕様書

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
deleteProperty

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報