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.
Die Methode handler.apply()
ist eine Falle für die [[Call]]
interne Objektmethode, die bei Operationen wie Funktionsaufrufen verwendet wird.
Probieren Sie es aus
function sum(a, b) {
return a + b;
}
const handler = {
apply: function (target, thisArg, argumentsList) {
console.log(`Calculate sum: ${argumentsList}`);
// Expected output: "Calculate sum: 1,2"
return target(argumentsList[0], argumentsList[1]) * 10;
},
};
const proxy1 = new Proxy(sum, handler);
console.log(sum(1, 2));
// Expected output: 3
console.log(proxy1(1, 2));
// Expected output: 30
Syntax
new Proxy(target, {
apply(target, thisArg, argumentsList) {
}
})
Parameter
Die folgenden Parameter werden an die Methode apply()
übergeben. this
ist an den Handler gebunden.
target
-
Das Zielobjekt, das aufrufbar ist.
thisArg
-
Das
this
-Argument für den Aufruf. argumentsList
-
Ein
Array
, das die an die Funktion übergebenen Argumente enthält.
Rückgabewert
Die Methode apply()
kann jeden Wert zurückgeben, der den Rückgabewert des Funktionsaufrufs repräsentiert.
Beschreibung
Abfangmechanismen
Diese Falle kann folgende Operationen abfangen:
- Funktionsaufruf:
proxy(...args)
Function.prototype.apply()
undFunction.prototype.call()
Reflect.apply()
Oder jede andere Operation, die die [[Call]]
interne Methode aufruft.
Invarianten
Die [[Call]]
-interne Methode des Proxys wirft einen TypeError
, wenn die Handler-Definition eine der folgenden Invarianten verletzt:
- Das
target
muss selbst aufrufbar sein. Das bedeutet, es muss ein Funktionsobjekt sein.
Beispiele
Abfangen eines Funktionsaufrufs
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
Specification |
---|
ECMAScript® 2025 Language Specification # sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
apply |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support