概要
Reflect は、インターセプトが可能な JavaScript 操作に対するメソッドを提供するビルトインオブジェクトです。メソッドは proxy handlers のメソッドと同じです。Reflect は関数オブジェクトではありませんので、構築ができません。
説明
他のグローバルオブジェクトとは異なり、Reflectはコンストラクタではありません。new オペレータで使用したり、関数としてReflect オブジェクトを呼び出すことはできません。Reflectのすべてのプロパティとメソッドは(Mathオブジェクトの場合のように)静的です。
メソッド
Reflect オブジェクトは proxy handler methodsと同じ名前をもち、Objectのメソッドのいくつかと重複する静的な関数を提供します。:
Reflect.apply()args引数によって指定される値をもつターゲット関数を呼び出します。Function.prototype.apply()も確かめて下さい。Reflect.construct()newオペレータ。new target(...args)を呼び出すのと同等です。Reflect.defineProperty()Object.defineProperty()に似ています。Booleanを返します。Reflect.deleteProperty()deleteオペレータ。delete target[name]を呼び出すのと同等です。Reflect.get()- プロパティの値を返す関数。
Reflect.getOwnPropertyDescriptor()Object.getOwnPropertyDescriptor()に似ています。指定したプロパティが存在する場合にプロパティディスクリプタを返すか、存在しない場合にはundefinedを返します。Reflect.getPrototypeOf()Object.getPrototypeOf()と同じです。Reflect.has()inオペレータ 。 独自か継承したプロパティが存在するかどうかを示すbooleanを返します。Reflect.isExtensible()Object.isExtensible()と同じです。Reflect.ownKeys()- 独自の(継承されない)プロパティのキーをもつ文字列の配列を返します。
Reflect.preventExtensions()Object.preventExtensions()に似ています。Booleanを返します。Reflect.set()- 値をプロパティに割り当てる関数。更新が成功したらtrueである
Booleanを返します。 Reflect.setPrototypeOf()- オブジェクトのプロトタイプを設定する関数。
仕様
| 仕様 | 状況 | コメント |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Reflect の定義 |
標準 | 最初期の定義 |
| ECMAScript 2017 Draft (ECMA-262) Reflect の定義 |
ドラフト | Reflect.enumerate を削除 |
ブラウザ実装状況
| 機能 | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基本サポート | 49 | (有) | 42 (42) | 未サポート | 未サポート | 未サポート |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | 49 | 49 | 42.0 (42) | 未サポート | 未サポート | 未サポート |