Maison > interface Web > js tutoriel > le corps du texte

Comment accéder aux variables membres privées à partir de fonctions définies par prototype en JavaScript ?

Susan Sarandon
Libérer: 2024-10-26 14:10:30
original
442 Les gens l'ont consulté

How to Access Private Member Variables from Prototype-Defined Functions in JavaScript?

Accès aux variables membres privées à partir de fonctions définies par un prototype

En JavaScript, les variables membres privées, définies dans le constructeur, sont inaccessibles aux prototypes. méthodes définies. Cela est évident dans l'extrait de code suivant :

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};
Copier après la connexion

Alors que nonProtoHello accède avec succès à privateField, prototypeHello échoue.

Raisonnement

Fonctions, y compris prototype -les méthodes définies ont accès à la portée dans laquelle elles sont définies. Les variables membres privées sont définies dans la portée du constructeur, ce qui les rend inaccessibles aux méthodes définies par le prototype.

Solution

Pour fournir aux méthodes prototypes un accès aux variables privées :

  • Définissez les getters et les setters sur cet objet.
  • Les méthodes prototypes peuvent accéder à ces getters et setters pour interagir avec les variables privées.

Par exemple :

function Person(name, secret) {
    // public
    this.name = name;

    // private
    var secret = secret;

    // public methods have access to private members
    this.setSecret = function(s) {
        secret = s;
    }

    this.getSecret = function() {
        return secret;
    }
}

// Must use getters/setters 
Person.prototype.spillSecret = function() { alert(this.getSecret()); };
Copier après la connexion

Cette approche permet aux méthodes définies par un prototype d'interagir avec des variables membres privées via des getters et des setters, tout en conservant l'encapsulation.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!