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