Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie greife ich über prototypdefinierte Funktionen in JavaScript auf private Mitgliedsvariablen zu?

Susan Sarandon
Freigeben: 2024-10-26 14:10:30
Original
442 Leute haben es durchsucht

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

Zugriff auf private Mitgliedsvariablen über prototypdefinierte Funktionen

In JavaScript sind private Mitgliedsvariablen, die im Konstruktor definiert sind, für Prototypen nicht zugänglich. definierte Methoden. Dies wird im folgenden Codeausschnitt deutlich:

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};
Nach dem Login kopieren

Während nonProtoHello erfolgreich auf privateField zugreift, schlägt PrototypHello fehl.

Begründung

Funktionen, einschließlich Prototyp -definierte Methoden haben Zugriff auf den Bereich, in dem sie definiert sind. Private Mitgliedsvariablen werden innerhalb des Konstruktorbereichs definiert, sodass sie für prototypdefinierte Methoden nicht zugänglich sind.

Lösung

Um Prototypmethoden Zugriff auf private Variablen zu gewähren:

  • Definieren Sie Getter und Setter für dieses Objekt.
  • Prototypmethoden können auf diese Getter und Setter zugreifen, um mit den privaten Variablen zu interagieren.

Zum Beispiel:

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()); };
Nach dem Login kopieren

Dieser Ansatz ermöglicht prototypdefinierten Methoden die Interaktion mit privaten Mitgliedsvariablen über Getter und Setter unter Beibehaltung der Kapselung.

Das obige ist der detaillierte Inhalt vonWie greife ich über prototypdefinierte Funktionen in JavaScript auf private Mitgliedsvariablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!