Technologieaustausch

Proxy in es6 implementiert den Beobachtermodus

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Einführung in Proxy

Proxy in ES6 ist ein spezielles Objekt, das zum Erstellen von Proxy-Objekten verwendet wird. Es ermöglicht uns, benutzerdefinierte Verhaltensweisen zu definieren, z. B. das Abfangen und Ändern der Standardaktionen eines Objekts. Proxy kann zum Abfangen verschiedener Vorgänge an Objekten verwendet werden, einschließlich Eigenschaftszugriff, Zuweisung, Funktionsaufrufe usw.

Die Funktion von Proxy besteht darin, vor dem Zielobjekt eine Abfangebene einzurichten, mit der verschiedene Vorgänge am Zielobjekt abgefangen und angepasst werden können. Durch die Verwendung von Proxy können wir Funktionen wie Zugriffskontrolle, Datenüberprüfung und Attribut-Hijacking von Zielobjekten implementieren.

Proxy umschließt das Zielobjekt mit einem Proxy-Objekt und stellt eine Reihe von Hook-Funktionen (auch „Traps“ genannt) bereit, die auf das Proxy-Objekt angewendet werden können. Wenn wir das Proxy-Objekt bearbeiten, rufen wir tatsächlich diese Hook-Funktionen auf und verarbeiten sie entsprechend nach Bedarf.

Einführung in Proxy-Attributoperationen

  • get(target, propKey, Receiver): Lesen von Objekteigenschaften abfangen
  • set(target, propKey, value, Receiver): fängt die Einstellung von Objekteigenschaften ab und gibt einen booleschen Wert zurück.
  • has(target, propKey): Die Operation von propKey im Proxy abfangen und einen booleschen Wert zurückgeben.
  • deleteProperty(target, propKey): fängt den Lösch-Proxy[propKey]-Vorgang ab und gibt einen booleschen Wert zurück.
  • ownKeys(target): Object.getOwnPropertyNames(proxy), Object.getOwnPropertySymbols(proxy), Object.keys(proxy), for...in Schleife abfangen und ein Array zurückgeben. Diese Methode gibt die Eigenschaftsnamen aller eigenen Eigenschaften des Zielobjekts zurück, während das Rückgabeergebnis von Object.keys() nur die eigenen durchlaufbaren Eigenschaften des Zielobjekts enthält.
  • getOwnPropertyDescriptor(target, propKey): fängt Object.getOwnPropertyDescriptor(proxy, propKey) ab und gibt das Beschreibungsobjekt der Eigenschaft zurück.
  • defineProperty(target, propKey, propDesc): fängt Object.defineProperty(proxy, propKey, propDesc), Object.defineProperties(proxy, propDescs) ab und gibt einen booleschen Wert zurück.
  • präventExtensions(target): Fängt Object.preventExtensions(proxy) ab und gibt einen booleschen Wert zurück.
  • getPrototypeOf(target): Object.getPrototypeOf(proxy) abfangen und ein Objekt zurückgeben.
  • isExtensible(target): fängt Object.isExtensible(proxy) ab und gibt einen booleschen Wert zurück.
  • setPrototypeOf(target, proto): fängt Object.setPrototypeOf(proxy, proto) ab und gibt einen booleschen Wert zurück. Wenn das Zielobjekt eine Funktion ist, können zwei zusätzliche Operationen abgefangen werden.
  • apply(target, object, args): Fangen Sie die Operation der Proxy-Instanz als Funktionsaufruf ab, z. B. Proxy(...Args), Proxy.call(Object, ...Args), Proxy.Apply(...).
  • Konstrukt(Ziel, Argumente): Fangen Sie die Operation der Proxy-Instanz als Konstruktoraufruf ab, z. B. als neuer Proxy(...Argumente).

verwendenProxyImplementieren Sie das Beobachtermuster