Baseline Widely available
The handler.apply()
method is a trap for the [[Call]]
object internal method, which is used by operations such as function calls.
function sum(a, b) {
return a + b;
}
const handler = {
apply(target, thisArg, argumentsList) {
console.log(`Calculate sum: ${argumentsList}`);
// Expected output: "Calculate sum: 1,2"
return target(argumentsList[0], argumentsList[1]) * 10;
},
};
const proxy = new Proxy(sum, handler);
console.log(sum(1, 2));
// Expected output: 3
console.log(proxy(1, 2));
// Expected output: 30
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.
The apply()
method can return any value, representing the return value of the function call.
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.
The proxy's [[Call]]
internal method throws a TypeError
if the handler definition violates one of the following invariants:
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
Specifications Browser compatibility See also
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