Maison > Article > interface Web > Comment l'objet proxy de JavaScript peut-il être utilisé pour implémenter des getters et setters dynamiques ?
Comprendre comment créer des getters et des setters pour des propriétés prédéfinies en JavaScript est un concept courant. Cependant, étendre cette fonctionnalité pour englober la gestion dynamique de tout nom de propriété qui n'est pas explicitement défini pose un défi unique.
Fonctionnalité Getter et Setter dynamique en PHP
PHP utilise les méthodes magiques __get() et __set() pour définir dynamiquement les comportements getter et setter pour n'importe quelle propriété. Cela fournit une approche pratique et flexible pour manipuler les propriétés à la volée.
Le proxy JavaScript à la rescousse
Depuis ES2015, JavaScript a introduit les proxys, qui changent la donne pour implémentation dynamique des getters et setters. Les proxys permettent la création d'objets qui servent de façades à d'autres objets, permettant l'interception et la modification de l'accès aux propriétés.
Exemple d'utilisation de proxys pour les getters/setters dynamiques
Considérons l'exemple suivant, où toutes les valeurs de propriété inexistantes renverront "manquant" et les valeurs de propriété de chaîne seront transformées en majuscules lors de la récupération :
<code class="javascript">"use strict"; if (typeof Proxy == "undefined") { throw new Error("This browser doesn't support Proxy"); } let original = { example: "value", }; let proxy = new Proxy(original, { get(target, name, receiver) { if (Reflect.has(target, name)) { let rv = Reflect.get(target, name, receiver); if (typeof rv === "string") { rv = rv.toUpperCase(); } return rv; } return "missing"; } });</code>
Test du comportement dynamique
console.log(original.example = ${original.example}); // "original.example = valeur"
console.log(proxy.example = ${proxy.example}); // "proxy.example = VALUE"
console.log(proxy.unknown = ${proxy.unknown}); // "proxy.unknown = manquant"
original.example = "mis à jour";
console.log(original.example = ${original.example}); // "original.example = mis à jour"
console.log(proxy.example = ${proxy.example}); // "proxy.example = UPDATED"
Comme démontré, le proxy intercepte les accès aux propriétés et applique le comportement défini pour les propriétés inexistantes ("manquantes") et les propriétés de chaîne (conversion en majuscules). Il permet également de modifier l'objet d'origine, le proxy reflétant les modifications apportées.
Compatibilité des navigateurs
Les proxys sont pris en charge dans tous les principaux navigateurs modernes, notamment Chrome, Firefox. , Edge, Safari et Internet Explorer 11.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!