Reflect は、介入可能な JavaScript 操作に対するメソッドを提供する組込みオブジェクトです。メソッドはプロキシハンドラーのメソッドと同じです。 Reflect は関数オブジェクトではありませんので、構築することはできません。
解説
他のグローバルオブジェクトとは異なり、 Reflect はコンストラクターではありません。 new 演算子で使用したり、 Reflect オブジェクトを関数として呼び出すことはできません。 Reflect のすべてのプロパティとメソッドは (Math オブジェクトと同様に) 静的です。
Reflect オブジェクトはプロキシハンドラーメソッドと同じ名前をもつ、下記の関数を提供します。
これらのメソッドの一部は Object の対応するメソッドとも同じですが、これらの間にはいくらか微妙な違いがあります。
メソッド
Reflect.apply(target, thisArgument, argumentsList)target関数を、引数argumentsListで指定された引数で呼び出します。Function.prototype.apply()も参照してください。Reflect.construct(target, argumentsList[, newTarget])- 関数としての
new演算子です。new target(...argumentsList)を呼び出すのと等価です。別なプロトタイプを指定するためにオプションを指定することもできます。 Reflect.defineProperty(target, propertyKey, attributes)Object.defineProperty()と同様です。返値はBooleanで、プロパティが定義できた場合はtrueを返します。Reflect.deleteProperty(target, propertyKey)- 関数としての
delete演算子です。delete target[propertyKey]を呼び出すのと等価です。 Reflect.get(target, propertyKey[, receiver])- このプロパティの値を返します。オブジェクトからのプロパティの取得 (
target[propertyKey]) を関数にしたようなものです。 Reflect.getOwnPropertyDescriptor(target, propertyKey)Object.getOwnPropertyDescriptor()に似ています。指定したプロパティが存在する場合にプロパティディスクリプターを返し、存在しない場合はundefinedを返します。Reflect.getPrototypeOf(target)Object.getPrototypeOf()と同じです。Reflect.has(target, propertyKey)Booleanで対象がそのプロパティを持っているかどうかを返します。固有の場合も継承の場合も含みます。in演算子を関数にしたものです。Reflect.isExtensible(target)Object.isExtensible()と同じです。Booleanを返し、trueならば対象が拡張可能です。Reflect.ownKeys(target)- 独自の (継承されているものではない) プロパティのキーをもつ文字列の配列を返します。
Reflect.preventExtensions(target)Object.preventExtensions()に似ています。Booleanを返し、trueは更新に成功した場合です。Reflect.set(target, propertyKey, value[, receiver])- 値をプロパティに割り当てる関数です。更新に成功したら
trueとなるBooleanを返します。 Reflect.setPrototypeOf(target, prototype)- オブジェクトのプロトタイプを設定する関数です。
Booleanを返し、trueならば成功です。
仕様書
| 仕様書 |
|---|
| ECMAScript (ECMA-262) Reflect の定義 |
ブラウザーの互換性
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。
Update compatibility data on GitHub
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Reflect | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | 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 | 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 | 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 | 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 | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
get | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 42 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | Firefox Android 完全対応 42 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応