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
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öchtenhandler
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
undObject.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.
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
- Metaprogrammierung Leitfaden
Reflect