handler.apply()
The handler.apply() method is a trap for the [[Call]] object internal method, which is used by operations such as function calls.
Try it
Syntax
js
new Proxy(target, {
apply(target, thisArg, argumentsList) {
}
});
Parameters
The following parameters are passed to the apply() method. this is bound to the handler.
target-
The target callable object.
thisArg-
The
thisargument for the call. argumentsList-
The list of arguments for the call.
Return value
The apply() method can return any value.
Description
Interceptions
This trap can intercept these operations:
- Function call:
proxy(...args) Function.prototype.apply()andFunction.prototype.call()Reflect.apply()
Or any other operation that invokes the [[Call]] internal method.
Invariants
If the following invariants are violated, the trap throws a TypeError when invoked.
- The
targetmust be a callable itself. That is, it must be a function object.
Examples
Trapping a function call
The following code traps a function call.
js
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
Specifications
| Specification |
|---|
| ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist |
Browser compatibility
BCD tables only load in the browser