Baseline Widely available
Der Proxy()
Konstruktor erstellt Proxy
Objekte.
new Proxy(target, handler)
Hinweis: Proxy()
kann nur mit new
konstruiert werden. Der Versuch, es ohne new
aufzurufen, löst einen TypeError
aus.
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.
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.
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
.
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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4