<code>var a=3; var object = { a:2, run: function() { alert(a); //a=3; } }; object.run(); </code>
Warum ist a nicht 2?
Was bedeutet a:2 im Objekt?
<code>var a=3; var object = { a:2, run: function() { alert(a); //a=3; } }; object.run(); </code>
Warum ist a nicht 2?
Was bedeutet a:2 im Objekt?
<code>run: function() { this.a=1; } }; </code>
Wenn Sie es nicht explizit angeben, handelt es sich immer noch um eine Variable im globalen Bereich.
<code class="javascript">var a=3; var object = { a:2, run: function() { alert(this.a);//2 alert(a);//3 } }; object.run(); </code>
Es ist eine Frage des Bereichs. Zu diesem Zeitpunkt sucht das Programm zunächst im aktuellen Bereich , und dann wird var a gefunden. Es ist tatsächlich äquivalent zu window.a. Wenn Sie hier direkt ein a auftauchen, entspricht es dem Finden eines a im globalen Bereich von window.a Ist es nicht das, nach dem object.a sucht? Wie bereits erwähnt, ist es äquivalent zu window.a und nicht zu obejct.a. Als objektorientierte Programmiersprache muss js einen Platz haben, zu dem alles gehört. Wenn Sie dies nicht tun, ist dies gleichbedeutend damit, dass js alles besitzt ist unter dem Fenster definiert. Wenn Sie also nicht zuerst definieren, um welches a es sich handelt, entspricht a direkt dem Fenster. Natürlich ist das, was unterhalb der Funktion definiert ist, gleichbedeutend mit der Zugehörigkeit zum Funktionsumfang. Im Detail gibt es nicht viel zu sagen. Weitere Informationen lesen.