handler.apply()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
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
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
this
argument for the call. argumentsList
-
An
Array
containing the arguments passed to the function.
Return value
The apply()
method can return any value, representing the return value of the function call.
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
The proxy's [[Call]]
internal method throws a TypeError
if the handler definition violates one of the following invariants:
- The
target
must be a callable itself. That is, it must be a function object.
Examples
Trapping a function call
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
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