Baseline Widely available
Die handler.apply()
-Methode ist eine Falle für die [[Call]]
interne Objektmethode, die von Operationen wie Funktionsaufrufen verwendet wird.
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) {
}
})
Parameter
Die folgenden Parameter werden an die apply()
-Methode übergeben. this
ist an den Handler gebunden.
target
Das aufrufbare Zielobjekt.
thisArg
Das this
-Argument für den Aufruf.
argumentsList
Ein Array
, das die an die Funktion übergebenen Argumente enthält.
Die apply()
-Methode kann jeden Wert zurückgeben, der den Rückgabewert des Funktionsaufrufs darstellt.
Diese Falle kann folgende Operationen abfangen:
proxy(...args)
Function.prototype.apply()
und Function.prototype.call()
Reflect.apply()
Oder jede andere Operation, die die [[Call]]
interne Methode aufruft.
Die [[Call]]
-Methode des Proxys löst einen TypeError
aus, wenn die Definition des Handlers eine der folgenden Invarianten verletzt:
target
muss selbst aufrufbar sein. Das heiÃt, es muss sich um ein Funktionsobjekt handeln.Der folgende Code fängt einen Funktionsaufruf ab.
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
Spezifikationen Browser-Kompatibilität Siehe auch
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