Es6-reflect-api

提供:Dev Guides
移動先:案内検索

ES6-リフレクトAPI

ES6は、プログラムの構造を検査または変更したり、言語自体での動作を変更したりすることを含む、メタプログラミングに関する新機能を導入しています。

以下は、メタプログラミングの3つの形式です-

  • イントロスペクション-イントロスペクションとは、それ自体に関する情報を収集するプログラムを意味します。 イントロスペクションに使用されるJavaScript演算子の例には、 typeof、instanceof などがあります。
  • 自己変更-自己変更とは、実行時にプログラムの構造を変更することを指します。 実行時に新しいプロパティにアクセスまたは作成する必要があります。 つまり、自己変更とは、一部のコードがそれ自体を変更することです。
  • 介入-プログラミング言語のデフォルトの動作を変更するコードを指します。 とりなしには、プログラミング言語のセマンティクスの変更、または実行時にプログラムに新しい構成を追加することが含まれます。

ES6では、メタプログラミングをサポートするReflect Application Programming Interface(Reflect API)およびProxy APIが導入されています。

Reflect APIを使用したメタプログラミング

ES6のReflect APIを使用すると、実行時にプログラムのクラス、オブジェクト、プロパティ、およびメソッドを検査または変更できます。 Reflect APIは、イントロスペクションに使用できる静的メソッドを持つグローバルReflectオブジェクトを提供します。 これらのメソッドは、コードに関する低レベルの情報を発見するために使用されます。 Reflect APIを使用して、実行時にプログラムを検査および内省する自動化テストフレームワークを構築できます。

Reflectオブジェクトのいくつかの一般的に使用されるメソッドを以下に示します-

Sr.No Method & Description
1

Reflect.apply()

argsパラメータで指定された引数を使用してターゲット関数を呼び出します

2

Reflect.construct()

クラスの新しいtarget(…​ args)オブジェクトを呼び出すことと同等

3

Reflect.get()

プロパティの値を返す関数。

4

Reflect.set()

プロパティに値を割り当てる関数。 更新が成功した場合にtrueとなるブール値を返します。

5

Reflect.has()

関数としてのin演算子。 独自のプロパティまたは継承されたプロパティが存在するかどうかを示すブール値を返します。