Maison > interface Web > js tutoriel > JavaScript peut-il implémenter des getters et setters dynamiques pour des propriétés imprévisibles ?

JavaScript peut-il implémenter des getters et setters dynamiques pour des propriétés imprévisibles ?

Barbara Streisand
Libérer: 2024-10-29 18:04:02
original
197 Les gens l'ont consulté

 Can JavaScript Implement Dynamic Getters and Setters for Unpredictable Properties?

JavaScript peut-il implémenter des getters/setters dynamiques ?

Les getters et setters dynamiques permettent aux objets JavaScript de gérer l'accès et la modification des propriétés au-delà des propriétés prédéfinies. Alors que les techniques JavaScript antérieures utilisaient des getters et des setters spécifiques pour les propriétés connues, cet article explore la possibilité d'implémenter des getters et des setters fourre-tout pour toutes les propriétés non définies.

Proxy ES2015 : une solution dynamique

ES2015 a introduit les proxys JavaScript, qui permettent la création d'objets servant d'intermédiaires pour d'autres objets. Cette fonctionnalité ouvre des getters et setters dynamiques :

<code class="js">const original = {
    example: "value",
};
const 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";
    },
});

console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"</code>
Copier après la connexion

Dans cet exemple, l'objet proxy intercepte l'accès aux propriétés de l'objet d'origine. Lors de l'accès à une propriété de chaîne, le proxy la convertit en majuscules et la renvoie ; pour les propriétés inconnues, il renvoie « manquant » au lieu de non défini.

Cette implémentation est compatible avec tous les navigateurs si le navigateur prend en charge ES2015 (ES6). Pour les navigateurs plus anciens, envisagez d'utiliser des polyfills ou des techniques alternatives. Les proxys fournissent une solution flexible pour les getters et setters dynamiques, permettant une gestion efficace des propriétés et une introspection des propriétés sans modifier l'objet d'origine.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal