--- title: Reflect.deleteProperty() slug: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty tags: - ECMAScript 2015 - JavaScript - Method - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty ---
静的な Reflect.defineProperty() メソッドは、{{jsxref("Object.defineProperty()")}} と似ていますが、 {{jsxref("Boolean")}} を返します。
Reflect.defineProperty(target, propertyKey, attributes)
targetpropertyKeyattributesプロパティの定義に成功したかどうかを示す {{jsxref("Boolean")}} です。
{{jsxref("TypeError")}}: target が {{jsxref("Object")}} ではなかった場合。
Reflect.defineProperty メソッドは、オブジェクトのプロパティの正確な追加や修正を行います。詳細は、類似メソッドの {{jsxref("Object.defineProperty")}} を参照してください。
Object.defineProperty はプロパティの定義が成功しなかった場合、オブジェクトを返すか {{jsxref("TypeError")}} を発生させます。しかし、Reflect.defineProperty は単純に、プロパティの定義が成功したかどうかを示す {{jsxref("Boolean")}} を返します。
let obj = {}
Reflect.defineProperty(obj, 'x', {value: 7}) // true
obj.x // 7
成功してオブジェクトを返すか、失敗して {{jsxref("TypeError")}} をスローする {{jsxref("Object.defineProperty")}} を使う場合、プロパティの定義中に発生する何らかの例外をキャッチするには、try...catch ブロックを使用します。
Reflect.defineProperty は真偽値の成功ステータスを返すので、if...else ブロックを使用することができます。
if (Reflect.defineProperty(target, property, attributes)) {
// success
} else {
// failure
}
| 仕様書 |
|---|
| {{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}} |
{{Compat("javascript.builtins.Reflect.defineProperty")}}