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 Latest Draft (ECMA-262) Reflect の定義 |
ドラフト | Reflect.enumerate を削除 |
ブラウザー実装状況
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| デスクトップ | モバイル | サーバー | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Reflect | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
apply | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
construct | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
defineProperty | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
deleteProperty | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
enumerate | Chrome 未対応 なし | Edge 未対応 12 — 15 | Firefox 未対応 なし | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Edge Mobile 未対応 なし | Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
get | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
getOwnPropertyDescriptor | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
getPrototypeOf | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
has | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
isExtensible | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
ownKeys | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
preventExtensions | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
set | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
setPrototypeOf | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Edge Mobile 完全対応 あり | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 非推奨。新しいウェブサイトでは使用しないでください。