Partage de technologie

Le proxy dans ES6 implémente le mode observateur

2024-07-08

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

Introduction au proxy

Le proxy dans ES6 est un objet spécial utilisé pour créer des objets proxy. Il nous permet de définir des comportements personnalisés, tels que l'interception et la modification des actions par défaut d'un objet. Le proxy peut être utilisé pour intercepter diverses opérations sur des objets, notamment l'accès aux propriétés, l'affectation, les appels de fonction, etc.

La fonction du proxy est de mettre en place une couche d'interception avant l'objet cible, qui peut intercepter et personnaliser diverses opérations sur l'objet cible. En utilisant Proxy, nous pouvons implémenter des fonctions telles que le contrôle d'accès, la vérification des données et le détournement d'attributs des objets cibles.

Le proxy enveloppe l'objet cible avec un objet proxy et fournit un ensemble de fonctions de hook (également appelées « pièges ») qui peuvent opérer sur l'objet proxy. Lorsque nous opérons sur l'objet proxy, nous appelons en fait ces fonctions de hook et les traitons en conséquence selon les besoins.

Introduction aux opérations sur les attributs de proxy

  • get(target, propKey, Receiver) : Intercepter la lecture des propriétés de l'objet
  • set(target, propKey, value, Receiver) : intercepte le réglage des propriétés de l'objet et renvoie une valeur booléenne.
  • has(target, propKey) : intercepte le fonctionnement de propKey dans le proxy et renvoie une valeur booléenne.
  • deleteProperty(target, propKey) : intercepte l'opération delete proxy[propKey] et renvoie une valeur booléenne.
  • ownKeys(target) : intercepte Object.getOwnPropertyNames(proxy), Object.getOwnPropertySymbols(proxy), Object.keys(proxy), for...in en boucle et renvoie un tableau. Cette méthode renvoie les noms de propriétés de toutes les propriétés propres de l'objet cible, tandis que le résultat renvoyé par Object.keys() inclut uniquement les propres propriétés traversables de l'objet cible.
  • getOwnPropertyDescriptor(target, propKey) : intercepte Object.getOwnPropertyDescriptor(proxy, propKey) et renvoie l'objet de description de la propriété.
  • DefineProperty(target, propKey, propDesc) : intercepte Object.defineProperty(proxy, propKey, propDesc), Object.defineProperties(proxy, propDescs) et renvoie une valeur booléenne.
  • PreventExtensions(target) : intercepte Object.preventExtensions(proxy) et renvoie une valeur booléenne.
  • getPrototypeOf(target) : intercepte Object.getPrototypeOf(proxy) et renvoie un objet.
  • isExtensible(target) : intercepte Object.isExtensible(proxy) et renvoie une valeur booléenne.
  • setPrototypeOf(target, proto) : intercepte Object.setPrototypeOf(proxy, proto) et renvoie une valeur booléenne. Si l'objet cible est une fonction, deux opérations supplémentaires peuvent être interceptées.
  • apply(target, object, args) : intercepter le fonctionnement de l'instance de proxy en tant qu'appel de fonction, tel que proxy(...args), proxy.call(object, ...args), proxy.apply(...).
  • construct(target, args) : intercepte le fonctionnement de l'instance de proxy en tant qu'appel de constructeur, tel que new proxy(...args).

utiliserProxyImplémenter le modèle d'observateur