Sagen wir, ich bin versucht, eine globale Variable x zu erstellen, wenn es nicht bereits vorhanden ist:Wenn ein globales Objekt in JavaScript zu schaffen, warum muss ich angeben müssen das Schlüsselwort this
x = x || {}; //This fails. x is not defined
this.x = this.x || {}; //But this works
Ich bin mit dieser in Firebug und war überrascht, dass die 1. Zeile gescheitert ist. Ich habe erwartet, dass x an das globale Fensterobjekt angehängt wird, aber es hat nicht funktioniert, bis ich die this
angegeben habe.
Ich hoffe, mein Verständnis der Sprache zu verbessern. Kann mir jemand erklären, warum das so ist?
Danke für jede Hilfe.
Weil 'x' nicht deklariert ist. Es funktioniert, wenn Sie haben: 'var x;' und dann 'x = x || {} '. Wenn Sie 'this' verwenden, haben Sie dieses Problem nicht, weil Sie auf' x' als * property * (des globalen Objekts) und nicht als * variable * zugreifen. – ZER0
'this.x' funktioniert, weil Sie effektiv einen Verweis auf 'x' in das 'Fenster' einfügen. In einem globalen Bereich bezieht sich "dies" auf "Fenster" – Benno