Da es bei ECMA-/Javascript um Folgendes geht Objects
y Contexts
(die auch eine Art Objekt sind), wird jede Variable in einem solchen gespeichert, das Variabel- (oder im Falle einer Funktion, Aktivierungsobjekt ).
Wenn Sie also Variablen wie diese erstellen:
var a = 1,
b = 2,
c = 3;
In der Globaler Geltungsbereich (= KEIN Funktionskontext), schreiben Sie diese Variablen implizit in die Globales Objekt (= window
in einem Browser).
Auf diese kann mit Hilfe der Punkt- oder Klammerschreibweise zugegriffen werden:
var name = window.a;
ou
var name = window['a'];
Dies funktioniert nur für das globale Objekt in dieser speziellen Instanz, da die Variables Objekt de la Globales Objekt ist die window
Objekt selbst. Innerhalb des Kontexts einer Funktion haben Sie keinen direkten Zugriff auf das Aktivierungsobjekt . Zum Beispiel:
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
console.log(name);
name = this['a']; // === 1
console.log(name);
}
new foobar();
new
erzeugt eine neue Instanz eines selbst definierten Objekts (Kontext). Ohne new
der Anwendungsbereich der Funktion wäre auch global
(=Fenster). Dieses Beispiel würde alarmieren undefined
y 1
beziehungsweise. Wenn wir ersetzen würden this.a = 1; this.b = 2
mit:
var a = 1,
b = 2;
Beide Alarmausgaben wären undefiniert. In diesem Szenario würden die Variablen a
y b
würde im Aktivierungsobjekt von foobar
auf die wir nicht zugreifen können (natürlich könnten wir auf diese direkt zugreifen, indem wir a
y b
).