Heim  >  Artikel  >  Web-Frontend  >  Wie können Sie von prototypdefinierten Funktionen in JavaScript auf private Variablen zugreifen?

Wie können Sie von prototypdefinierten Funktionen in JavaScript auf private Variablen zugreifen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 20:16:30766Durchsuche

How can you access private variables from prototype-defined functions in JavaScript?

Zugriffsbeschränkung in JavaScript-Funktionsdefinitionen

In JavaScript hängt die Zugänglichkeit von Variablen für Funktionen vom Umfang ab, in dem die Funktionen definiert sind. Private Variablen, die innerhalb eines Konstruktors deklariert werden, sind nur für Funktionen innerhalb des Gültigkeitsbereichs dieses Konstruktors zugänglich. Dies stellt eine Einschränkung dar, wenn Funktionen außerhalb des Konstruktors definiert werden, z. B. mithilfe der Prototypeigenschaft.

Prototypdefinierte Funktionen und private Variablen

Betrachten Sie den folgenden Code, bei dem a TestClass verfügt über eine private Variable „privateField“:

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

In diesem Beispiel hat „nonProtoHello“, das im Konstruktor definiert ist, Zugriff auf „privateField“, während „prototypeHello“, das mit dem Prototyp definiert wurde, keinen Zugriff hat. Dies liegt daran, dass auf dem Prototyp definierte Funktionen nicht im Geltungsbereich des Konstruktors definiert sind.

Überschreiben des Zugriffs auf private Variablen

Es ist nicht möglich, prototypdefinierte Funktionen direkt zuzulassen Zugriff auf private Variablen. Dies würde im Wesentlichen einen Reverse-Scoping-Mechanismus schaffen, der von JavaScript nicht unterstützt wird.

Alternative: Getter und Setter

Um prototypdefinierten Funktionen die Manipulation privater Variablen zu ermöglichen, Mit diesem Objekt können Sie innerhalb des Konstruktors Getter und Setter erstellen. Diese öffentlichen Methoden können auf die privaten Variablen zugreifen und ermöglichen, dass diese durch die Prototypfunktionen geändert werden. Hier ist ein 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()); };

Das obige ist der detaillierte Inhalt vonWie können Sie von prototypdefinierten Funktionen in JavaScript auf private Variablen 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