The handler.apply()
method is a trap for the [[Call]]
object internal method, which is used by operations such as function calls.
The handler.apply()
method is a trap for the [[Call]]
object internal method, which is used by operations such as function calls.
new Proxy(target, { apply(target, thisArg, argumentsList) { } });
The following parameters are passed to the apply()
method. this
is bound to the handler.
target
The target callable object.
thisArg
The this
argument for the call.
argumentsList
The list of arguments for the call.
The apply()
method can return any value.
This trap can intercept these operations:
proxy(...args)
Function.prototype.apply()
and Function.prototype.call()
Reflect.apply()
Or any other operation that invokes the [[Call]]
internal method.
If the following invariants are violated, the trap throws a TypeError
when invoked.
target
must be a callable itself. That is, it must be a function object.The following code traps a function call.
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
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist |
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
apply |
49 | 12 | 18 | 36 | 10 | 49 | 18 | 36 | 10 | 5.0 | 49 | 1.0 | 6.0.0 |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply