Objektvariablenzugriff in JavaScript: this.var oder nicht?
Im objektorientierten Programmiermodell von JavaScript fragt man sich häufig, ob alle Variable innerhalb eines Objekts erfordert das Schlüsselwort this.
this.var vs. Local Variablen
Im Gegensatz zum klassenbasierten Modell von C verwendet JavaScript prototypische Vererbung. Bei der prototypischen Vererbung ist alles ein Objekt und Objekte können von anderen Objekten erben.
In JavaScript erstellt eine Konstruktorfunktion, die mit dem Schlüsselwort new aufgerufen wird, neue Objekte und weist ihnen Eigenschaften zu. Das Schlüsselwort this innerhalb eines Konstruktors bezieht sich auf das neu erstellte Objekt.
Methoden, auf die über das Schlüsselwort this zugegriffen werden kann, sind Funktionen, die für Objekte aufgerufen werden. Auf lokale Variablen, die innerhalb des Gültigkeitsbereichs einer Methode deklariert werden, kann dadurch jedoch nicht direkt zugegriffen werden.
Beispiel:
function Foo() { this.bar = 0; this.getBar = function() { return this.bar; }; }
In diesem Beispiel bezieht sich this.bar auf die Leiste Eigenschaft der Foo-Instanz. Allerdings verweist bar innerhalb der getBar-Methode auf eine lokale Variable, die standardmäßig nicht definiert ist. Um auf die Eigenschaft zuzugreifen, müssen Sie this.bar verwenden.
Private Attribute durch Abschlüsse
Um private Attribute zu erstellen, ist JavaScript auf Abschlüsse angewiesen. Innerhalb des Gültigkeitsbereichs eines Konstruktors definierte Funktionen haben Zugriff auf die lokalen Variablen dieses Konstruktors. Indem Sie also Funktionen innerhalb eines Konstruktors erstellen und diese als privilegierte Methoden verfügbar machen, können Sie private Attribute verwalten.
Beispiel:
function Foo() { var bar = "foo"; this.getBar = function() { return bar; }; }
In diesem Beispiel ist bar eine lokale Variable des Foo-Konstruktors. Die getBar-Methode ist eine privilegierte Methode, die Zugriff auf bar hat.
Prototypmethoden und privilegierte Methoden
Auf dem Prototypobjekt definierte Methoden werden von allen Instanzen geerbt. Sie haben jedoch keinen Zugriff auf privilegierte Methoden, es sei denn, der untergeordnete Prototyp erbt vom übergeordneten Prototyp.
Zusammenfassend lässt sich sagen, dass this.var zwar für den Zugriff auf Objekteigenschaften innerhalb von Methoden erforderlich ist, für lokale Variablen jedoch nicht unbedingt erforderlich ist . Privilegierte Methoden, die als Abschlüsse innerhalb des Konstruktors definiert sind, bieten einen Mechanismus zum Erstellen privater Attribute im objektorientierten Programmiermodell von JavaScript.
Das obige ist der detaillierte Inhalt vonWann sollte ich „this.var' verwenden, um auf Variablen in JavaScript-Objekten zuzugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!