Heim  >  Artikel  >  Web-Frontend  >  Wie kann ich über prototypdefinierte Funktionen in JavaScript auf private Mitglieder zugreifen?

Wie kann ich über prototypdefinierte Funktionen in JavaScript auf private Mitglieder zugreifen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 00:07:30836Durchsuche

How Can I Access Private Members from Prototype-Defined Functions in JavaScript?

Zugriff auf private Mitgliedsvariablen aus prototypdefinierten Funktionen

In JavaScript können Sie beim Definieren von Methoden im Konstruktor einer Klasse auf private zugreifen Variablen, die im Konstruktor deklariert werden. Beim Definieren von Methoden für den Prototyp wird der Zugriff auf diese privaten Variablen jedoch problematisch.

Zur Veranschaulichung:

<code class="js">function TestClass() {
    var privateField = "hello";
    this.nonProtoHello = function() { alert(privateField); };
}
TestClass.prototype.prototypeHello = function() { alert(privateField); };</code>

Der Aufruf von t.nonProtoHello() greift korrekt auf das private privateField zu, t.prototypeHello jedoch () löst einen Fehler aus. Dies liegt daran, dass prototypdefinierte Methoden nicht im Gültigkeitsbereich des Konstruktors definiert sind und daher nicht auf seine lokalen Variablen zugreifen können.

Leider gibt es keine Möglichkeit, von prototypdefinierten Funktionen direkt auf private Variablen zuzugreifen. Sie können jedoch eine ähnliche Funktionalität mit Getter- und Setter-Funktionen erreichen.

<code class="js">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()); };</code>

In diesem Beispiel ist das private Variablengeheimnis für prototypdefinierte Methoden über die Getter- und Setter-Funktionen zugänglich.

Das obige ist der detaillierte Inhalt vonWie kann ich über prototypdefinierte Funktionen in JavaScript auf private Mitglieder zugreifen?. 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