handler.apply()

handler.apply() メソッドは関数呼び出しに対するトラップです。

構文

const p = new Proxy(target, {
  apply: function(target, thisArg, argumentsList) {
  }
});

引数

次の引数が apply() メソッドに渡されます。 this はハンドラーにバインドされます。

target
ターゲットオブジェクト
thisArg
この呼び出しに対する this 引数
argumentsList
この呼び出しに対する引数リスト

返値

apply() メソッドはどんな値でも返すことができます。

解説

handler.apply() メソッドは関数呼び出しに対するトラップです。

介入

このトラップは下記の操作に介入できます。

不変条件

以下の不変条件に違反している場合、プロキシは TypeError を発生します。

target は呼び出し可能、つまり関数でなければなりません。

関数呼び出しのトラップ

次のコードでは、関数呼び出しをトラップします。

const p = new Proxy(function() {}, {
  apply: function(target, thisArg, argumentsList) {
    console.log('called: ' + argumentsList.join(', '));
    return argumentsList[0] + argumentsList[1] + argumentsList[2];
  }
});

console.log(p(1, 2, 3)); // "called: 1, 2, 3"
                         // 6

仕様書

仕様書
ECMAScript (ECMA-262)
[[Call]] の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
applyChrome 完全対応 49Edge 完全対応 12Firefox 完全対応 18IE 未対応 なしOpera 完全対応 36Safari 完全対応 10WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 18Opera Android 完全対応 36Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報