Heim  >  Artikel  >  Web-Frontend  >  Wie greife ich über prototypdefinierte Funktionen in JavaScript auf private Mitgliedsvariablen zu?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-26 14:10:30443Durchsuche

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)};

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()); };

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!

Stellungnahme:
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