【JavaScript ECMAScript】Proxy::handler.getPrototypeOfインスタンスメソッドの使い方
handler.getPrototypeOf()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
handler.getPrototypeOf()メソッドは、Proxyオブジェクトのプロトタイプチェーンに関する操作を捕捉・カスタマイズするために実行されるメソッドです。JavaScriptのProxyオブジェクトは、あるオブジェクト(ターゲット)への操作を横取り(インターセプト)し、その振る舞いを変更することを可能にします。
このgetPrototypeOfメソッドは、Object.getPrototypeOf()関数やinstanceof演算子、Object.prototype.isPrototypeOf()メソッドなど、オブジェクトのプロトタイプ(継承元)を取得しようとする操作がProxyオブジェクトに対して行われた際に呼び出されます。具体的には、ターゲットオブジェクトのプロトタイプが何であるかを決定し、その情報を返す役割を担います。
このメソッドを使用することで、ターゲットの実際のプロトタイプを隠蔽したり、異なるプロトタイプを返したりするなど、プロトタイプチェーンの振る舞いを柔軟に制御できます。もしハンドラオブジェクトにこのgetPrototypeOfメソッドが定義されていない場合、デフォルトではターゲットオブジェクト自身のプロトタイプがそのまま返されます。セキュリティの強化やオブジェクトの抽象化、デバッグ目的などで、オブジェクトのプロトタイプ情報をプログラムから制御したい場合に非常に有用です。
構文(syntax)
1new Proxy(targetObject, { 2 getPrototypeOf(target) { 3 return Reflect.getPrototypeOf(target); 4 } 5});
引数(parameters)
target
- target: Proxyオブジェクトがラップしている元のオブジェクト
戻り値(return)
Object | null
handler.getPrototypeOf() は、プロキシされたオブジェクトのプロトタイプを返します。プロトタイプが存在しない場合は null を返します。