---
title: Reflect
slug: Web/JavaScript/Reference/Global_Objects/Reflect
tags:
- ECMAScript 2015
- JavaScript
- Overview
- Reflect
translation_of: Web/JavaScript/Reference/Global_Objects/Reflect
---
{{JSRef}}
Reflect は、介入可能な JavaScript 操作に対するメソッドを提供する組込みオブジェクトです。メソッドはプロキシハンドラーのメソッドと同じです。 Reflect
は関数オブジェクトではありませんので、構築することはできません。
解説
他のグローバルオブジェクトとは異なり、 Reflect
はコンストラクターではありません。 new
演算子で使用したり、 Reflect
オブジェクトを関数として呼び出すことはできません。 Reflect
のすべてのプロパティとメソッドは ({{jsxref("Math")}} オブジェクトと同様に) 静的です。
Reflect
オブジェクトはプロキシハンドラーメソッドと同じ名前をもつ、下記の関数を提供します。
これらのメソッドの一部は {{jsxref("Object")}} の対応するメソッドとも同じですが、これらの間にはいくらか微妙な違いがあります。
メソッド
- {{jsxref("Reflect.apply()", "Reflect.apply(target, thisArgument, argumentsList)")}}
target
関数を、引数 argumentsList
で指定された引数で呼び出します。 {{jsxref("Function.prototype.apply()")}} も参照してください。
- {{jsxref("Reflect.construct()", "Reflect.construct(target, argumentsList[, newTarget])")}}
- 関数としての
new
演算子です。 new target(...argumentsList)
を呼び出すのと等価です。別なプロトタイプを指定するためにオプションを指定することもできます。
- {{jsxref("Reflect.defineProperty()", "Reflect.defineProperty(target, propertyKey, attributes)")}}
- {{jsxref("Object.defineProperty()")}} と同様です。返値は {{jsxref("Boolean")}} で、プロパティが定義できた場合は
true
を返します。
- {{jsxref("Reflect.deleteProperty()", "Reflect.deleteProperty(target, propertyKey)")}}
- 関数としての
delete
演算子です。 delete target[propertyKey]
を呼び出すのと等価です。
- {{jsxref("Reflect.get()", "Reflect.get(target, propertyKey[, receiver])")}}
- このプロパティの値を返します。オブジェクトからのプロパティの取得 (
target[propertyKey]
) を関数にしたようなものです。
- {{jsxref("Reflect.getOwnPropertyDescriptor()", "Reflect.getOwnPropertyDescriptor(target, propertyKey)")}}
- {{jsxref("Object.getOwnPropertyDescriptor()")}} に似ています。指定したプロパティが存在する場合にプロパティディスクリプターを返し、存在しない場合は {{jsxref("undefined")}} を返します。
- {{jsxref("Reflect.getPrototypeOf()", "Reflect.getPrototypeOf(target)")}}
- {{jsxref("Object.getPrototypeOf()")}} と同じです。
- {{jsxref("Reflect.has()", "Reflect.has(target, propertyKey)")}}
- {{jsxref("Boolean")}} で対象がそのプロパティを持っているかどうかを返します。固有の場合も継承の場合も含みます。
in
演算子を関数にしたものです。
- {{jsxref("Reflect.isExtensible()", "Reflect.isExtensible(target)")}}
- {{jsxref("Object.isExtensible()")}} と同じです。 {{jsxref("Boolean")}} を返し、
true
ならば対象が拡張可能です。
- {{jsxref("Reflect.ownKeys()", "Reflect.ownKeys(target)")}}
- 独自の (継承されているものではない) プロパティのキーをもつ文字列の配列を返します。
- {{jsxref("Reflect.preventExtensions()", "Reflect.preventExtensions(target)")}}
- {{jsxref("Object.preventExtensions()")}} に似ています。 {{jsxref("Boolean")}} を返し、
true
は更新に成功した場合です。
- {{jsxref("Reflect.set()", "Reflect.set(target, propertyKey, value[, receiver])")}}
- 値をプロパティに割り当てる関数です。更新に成功したら
true
となる {{jsxref("Boolean")}} を返します。
- {{jsxref("Reflect.setPrototypeOf()", "Reflect.setPrototypeOf(target, prototype)")}}
- オブジェクトのプロトタイプを設定する関数です。 {{jsxref("Boolean")}} を返し、
true
ならば成功です。
仕様書
仕様書 |
{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}} |
ブラウザーの互換性
{{Compat("javascript.builtins.Reflect")}}
関連情報
- {{jsxref("Proxy")}} グローバルオブジェクト
- {{jsxref("Proxy.handler", "handler")}} オブジェクト