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!