Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Proxy::handler.applyインスタンスメソッドの使い方

handler.apply()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

handler.apply()メソッドは、Proxyオブジェクトが関数として呼び出された際に、その呼び出しをインターセプト(横取り)してカスタムな振る舞いを実行するメソッドです。JavaScriptのProxyオブジェクトは、別のオブジェクトの基本的な操作(プロパティの読み書き、関数の実行など)を捕捉し、開発者がその振る舞いを変更できるようにする強力な機能を提供します。

このhandler.apply()は、Proxyハンドラーオブジェクト内で定義されるトラップ(捕捉)メソッドの一つです。具体的には、プロキシされた関数が直接呼び出されたり、Function.prototype.apply()、Function.prototype.call()、あるいはReflect.apply()といったメソッドを使って呼び出されたりするたびに、このhandler.apply()が自動的に実行されます。

このメソッドは、プロキシの対象となっている元の関数を示すtarget、関数が呼び出された際のthisの値を示すthisArg、そして関数に渡された引数を配列として持つargumentsListの三つの引数を受け取ります。これらの情報を使って、元の関数の実行を制御したり、異なる処理を実行したりすることができます。このメソッドの返り値は、プロキシされた関数呼び出しの結果となります。これにより、関数の実行前後に独自のロジックを追加したり、特定の条件に基づいて実行を拒否したりといった高度な制御が可能になります。

公式リファレンス: handler.apply()

構文(syntax)

1new Proxy(targetFunction, {
2  apply: function(target, thisArgument, argumentsList) {
3    // 関数呼び出し時の処理
4  }
5});

引数(parameters)

target, thisArg, argumentsList

  • target: Proxy オブジェクトによってラップされる元のオブジェクト
  • thisArg: apply メソッドが呼び出された際の this の値
  • argumentsList: 元の関数に渡される引数のリスト

戻り値(return)

任意のJavaScript値

handler.apply() メソッドは、Proxy オブジェクトの振る舞いをカスタマイズする際に、ターゲットオブジェクトの関数を呼び出す操作をインターセプトした結果を返します。これは、元の関数が実行された場合の戻り値、あるいは関数呼び出しで発生した例外など、任意の JavaScript 値になります。

関連コンテンツ