Reflect.defineProperty()

これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

静的な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はBooleanの成功ステータスを返すので、if...elseブロックを使えます:

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

仕様

仕様 状態 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Reflect.defineProperty' in that specification.
Standard Initial definition.

ブラウザ実装状況

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 未サポート 42 (42) 未サポート 未サポート 未サポート
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 未サポート 未サポート 42.0 (42) 未サポート 未サポート 未サポート

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,