ES6-Reflect API

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

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

  • Introspection−イントロスペクションとは、それ自体に関する情報を収集するプログラムを意味します。イントロスペクションに使用されるJavaScript演算子の例は次のとおりです。typeof, instanceof

  • Self-modification−自己変更とは、実行時にプログラムの構造を変更することです。これには、実行時に新しいプロパティにアクセスまたは作成することが含まれます。言い換えると、自己変更とは、一部のコードがそれ自体を変更することです。

  • Intercession−プログラミング言語のデフォルトの動作を変更するコードを指します。執り成しには、プログラミング言語のセマンティクスを変更するか、実行時にプログラムに新しい構成を追加することが含まれます。

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

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

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

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

シニア番号 方法と説明
1 Reflect.apply()

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

2 Reflect.construct()

クラスの新しいtarget(... args)オブジェクトを呼び出すのと同じです

3 Reflect.get()

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

4 Reflect.set()

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

5 Reflect.has()

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