この記事は編集レビューを必要としています。ぜひご協力ください。
これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
静的なReflect
.defineProperty()
メソッドは、Object.defineProperty()
と似ていますが、Boolean
を返します。
構文
Reflect.defineProperty(target, propertyKey, attributes)
パラメータ
target
- プロパティを定義する対象のオブジェクト。
propertyKey
- 定義または修正をするプロパティ名。
attributes
- 定義または修正されているプロパティのための属性。.
戻り値
プロパティが成功裏に定義されたかどうかを示すBoolean
。
エラーのスロー
targetがObject
ではなかった場合、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) | 未サポート | 未サポート | 未サポート |