Proxy() Konstruktor

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.

Der Proxy() Konstruktor erstellt Proxy Objekte.

Syntax

js
new Proxy(target, handler)

Hinweis: Proxy() kann nur mit new konstruiert werden. Der Versuch, es ohne new aufzurufen, löst einen TypeError aus.

Parameter

target

Ein Zielobjekt, das mit Proxy umwickelt werden soll. Es kann sich um jede Art von Objekt handeln, einschließlich eines nativen Arrays, einer Funktion oder sogar eines anderen Proxys.

handler

Ein Objekt, dessen Eigenschaften Funktionen sind, die das Verhalten des Proxys definieren, wenn eine Operation darauf ausgeführt wird.

Beschreibung

Verwenden Sie den Proxy() Konstruktor, um ein neues Proxy Objekt zu erstellen. Dieser Konstruktor benötigt zwei zwingende Argumente:

  • target ist das Objekt, für das Sie den Proxy erstellen möchten
  • handler ist das Objekt, das das benutzerdefinierte Verhalten des Proxys definiert.

Ein leerer Handler erstellt einen Proxy, der sich in fast allen Aspekten genau wie das Ziel verhält. Durch die Definition einer bestimmten Gruppe von Funktionen auf dem handler-Objekt können Sie spezifische Aspekte des Verhaltens des Proxys anpassen. Zum Beispiel können Sie durch die Definition von get() eine benutzerdefinierte Version des Zielobjekts property accessor bereitstellen.

Handler-Funktionen

In diesem Abschnitt sind alle Handler-Funktionen aufgelistet, die Sie definieren können. Handler-Funktionen werden manchmal als traps bezeichnet, weil sie Aufrufe zum zugrunde liegenden Zielobjekt abfangen.

handler.apply()

Eine Trap für einen Funktionsaufruf.

handler.construct()

Eine Trap für den new Operator.

handler.defineProperty()

Eine Trap für Object.defineProperty.

handler.deleteProperty()

Eine Trap für den delete Operator.

handler.get()

Eine Trap für das Abrufen von Eigenschaftswerten.

handler.getOwnPropertyDescriptor()

Eine Trap für Object.getOwnPropertyDescriptor.

handler.getPrototypeOf()

Eine Trap für Object.getPrototypeOf.

handler.has()

Eine Trap für den in Operator.

handler.isExtensible()

Eine Trap für Object.isExtensible.

handler.ownKeys()

Eine Trap für Object.getOwnPropertyNames und Object.getOwnPropertySymbols.

handler.preventExtensions()

Eine Trap für Object.preventExtensions.

handler.set()

Eine Trap für das Setzen von Eigenschaftswerten.

handler.setPrototypeOf()

Eine Trap für Object.setPrototypeOf.

Beispiele

Selektives Proxieren von Property Accessors

In diesem Beispiel hat das Ziel zwei Eigenschaften, notProxied und proxied. Wir definieren einen Handler, der einen anderen Wert für proxied zurückgibt und alle anderen Zugriffe zum Ziel durchlässt.

js
const target = {
  notProxied: "original value",
  proxied: "original value",
};

const handler = {
  get(target, prop, receiver) {
    if (prop === "proxied") {
      return "replaced value";
    }
    return Reflect.get(...arguments);
  },
};

const proxy = new Proxy(target, handler);

console.log(proxy.notProxied); // "original value"
console.log(proxy.proxied); // "replaced value"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-proxy-constructor

Browser-Kompatibilität

Siehe auch