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 bestimmen, wenn eine Operation darauf ausgeführt wird.
Beschreibung
Verwenden Sie den Proxy()
Konstruktor, um ein neues Proxy
Objekt zu erstellen. Dieser Konstruktor nimmt zwei obligatorische Argumente entgegen:
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 genauso verhält wie das Ziel. Indem Sie eine beliebige Gruppe von Funktionen auf dem handler
-Objekt definieren, können Sie bestimmte Aspekte des Proxy-Verhaltens anpassen. Zum Beispiel können Sie durch die Definition von get()
eine angepasste Version des Property Accessors des Ziels bereitstellen.
Handler-Funktionen
In diesem Abschnitt werden alle Handler-Funktionen aufgelistet, die Sie definieren können. Handler-Funktionen werden manchmal als Traps bezeichnet, weil sie Aufrufe an das zugrundeliegende 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 zum 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
undObject.getOwnPropertySymbols
. handler.preventExtensions()
-
Ein Trap für
Object.preventExtensions
. handler.set()
-
Ein Trap zum Setzen von Eigenschaftswerten.
handler.setPrototypeOf()
-
Ein Trap für
Object.setPrototypeOf
.
Beispiele
Selektives Proxen von Property-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 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 Language Specification # sec-proxy-constructor |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Metaprogrammierung Leitfaden
Reflect