Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

handler.apply()

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.

Die handler.apply()-Methode ist eine Falle für die [[Call]] interne Objektmethode, die von Operationen wie Funktionsaufrufen verwendet wird.

Probieren Sie es aus

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

js
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.

Rückgabewert

Die apply()-Methode kann jeden Wert zurückgeben, der den Rückgabewert des Funktionsaufrufs darstellt.

Beschreibung

Abfangmöglichkeiten

Diese Falle kann folgende Operationen abfangen:

Oder jede andere Operation, die die [[Call]] interne Methode aufruft.

Invarianten

Die [[Call]]-Methode des Proxys löst einen TypeError aus, wenn die Definition des Handlers eine der folgenden Invarianten verletzt:

  • Das target muss selbst aufrufbar sein. Das heißt, es muss sich um ein Funktionsobjekt handeln.

Beispiele

Abfangen eines Funktionsaufrufs

Der folgende Code fängt einen Funktionsaufruf ab.

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

Spezifikationen

Spezifikation
ECMAScript® 2026 Language Specification
# sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist

Browser-Kompatibilität

Siehe auch