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
new Proxy(target, handler)
Parameter
target-
Ein Zielobjekt, das mit
Proxyumwickelt 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:
targetist das Objekt, für das Sie einen Proxy erstellen möchten.handlerist 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
newOperator. handler.defineProperty()-
Ein Trap für
Object.defineProperty. handler.deleteProperty()-
Ein Trap für den
deleteOperator. 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
inOperator. handler.isExtensible()-
Ein Trap für
Object.isExtensible. handler.ownKeys()-
Ein Trap für
Object.getOwnPropertyNamesundObject.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.
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
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Siehe auch
- Meta-Programmierung Leitfaden
Reflect