A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply below:

handler.apply() - JavaScript | MDN

handler.apply()

Baseline Widely available

handler.apply() メソッドは、オブジェクトの [[Call]] 内部メソッドに対するトラップです。関数呼び出しなどの操作で使用されます。

試してみましょう
function sum(a, b) {
  return a + b;
}

const handler = {
  apply: function (target, thisArg, argumentsList) {
    console.log(`Calculate sum: ${argumentsList}`);
    // Expected output: "Calculate sum: 1,2"

    return target(argumentsList[0], argumentsList[1]) * 10;
  },
};

const proxy1 = new Proxy(sum, handler);

console.log(sum(1, 2));
// Expected output: 3
console.log(proxy1(1, 2));
// Expected output: 30
構文
new Proxy(target, {
  apply(target, thisArg, argumentsList) {
  }
});
引数

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

target

ターゲットオブジェクト

thisArg

この呼び出しに対する this 引数

argumentsList

この呼び出しに対する引数リスト

返値

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

解説 介入

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

他にも、[[Call]] 内部メソッドを呼び出すあらゆる操作に介入できます。

不変条件

以下の不変条件に違反している場合、トラップが呼び出されると TypeError が発生します。

例 関数呼び出しのトラップ

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

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

console.log(p(1, 2, 3)); // "called: 1,2,3"
// 6
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4