Reflect.defineProperty()

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

構文

Reflect.defineProperty(target, propertyKey, attributes)

引数

target
プロパティを定義する対象のオブジェクトです。
propertyKey
定義または修正をするプロパティ名です。
attributes
定義または修正されているプロパティのための属性です。

戻り値

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

例外

targetObject ではなかった場合、TypeError をスローする。

説明

Reflect.defineProperty メソッドは、オブジェクトのプロパティの正確な追加や修正を行います。詳細は、類似しているメソッドであるObject.defineProperty を見てください。Object.defineProperty はプロパティが成功裏に定義できなかった場合、オブジェクトを返すかTypeError をスローします。しかし、Reflect.defineProperty は単純に、プロパティが成功裏に定義されたかどうかを示す Boolean を返します。

Reflect.defineProperty() を使う

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

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

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

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

仕様

仕様 状態 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Reflect.defineProperty の定義
標準 初期定義です。
ECMAScript Latest Draft (ECMA-262)
Reflect.defineProperty の定義
ドラフト

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
definePropertyChrome 完全対応 49Edge 完全対応 12Firefox 完全対応 42IE 未対応 なしOpera 完全対応 36Safari 完全対応 10WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 42Opera Android 完全対応 36Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報