[Go to site: main page, start]

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

View in English Always switch to English

Proxy() Konstruktor

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.

Der Proxy() Konstruktor erstellt Proxy Objekte.

Syntax

js
new Proxy(target, handler)

Hinweis: Proxy() kann nur mit new erstellt werden. Der Versuch, ihn ohne new aufzurufen, erzeugt einen TypeError.

Parameter

target

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

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 obligatorische Argumente:

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

Ein leerer Handler wird einen Proxy erzeugen, der sich in fast allen Punkten genau wie das Ziel verhält. Indem Sie eine beliebige Gruppe von Funktionen auf dem handler-Objekt definieren, können Sie bestimmte Aspekte des Verhaltens des Proxys anpassen. Zum Beispiel können Sie durch Definieren von get() eine angepasste Version des Eigenschafts-Accessors des Ziels bereitstellen.

Handler-Funktionen

Dieser Abschnitt listet alle Handler-Funktionen auf, die Sie definieren können. Handler-Funktionen werden manchmal als Traps bezeichnet, weil sie Aufrufe an das zugrunde liegende Zielobjekt "abfangen".

handler.apply()

Ein Trap für einen Funktionsaufruf.

handler.construct()

Ein Trap für den new Operator.

handler.defineProperty()

Ein Trap für Object.defineProperty.

handler.deleteProperty()

Ein Trap für den delete Operator.

handler.get()

Ein Trap für das Abrufen von Eigenschaftswerten.

handler.getOwnPropertyDescriptor()

Ein Trap für Object.getOwnPropertyDescriptor.

handler.getPrototypeOf()

Ein Trap für Object.getPrototypeOf.

handler.has()

Ein Trap für den in Operator.

handler.isExtensible()

Ein Trap für Object.isExtensible.

handler.ownKeys()

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

handler.preventExtensions()

Ein Trap für Object.preventExtensions.

handler.set()

Ein Trap für das Setzen von Eigenschaftswerten.

handler.setPrototypeOf()

Ein Trap für Object.setPrototypeOf.

Beispiele

Selektives Proxen von Eigenschafts-Accessoren

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

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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-proxy-constructor

Browser-Kompatibilität

Siehe auch