Path: csiph.com!eternal-september.org!feeder.eternal-september.org!newsfeed0.kamp.net!newsfeed.kamp.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Stefan Reuther Newsgroups: de.comp.lang.javascript Subject: Re: Schleife =?UTF-8?B?ZsO8ciBkb2N1bWVudC5nZXRFbGVtZW50QnkgLi4uIA==?= =?UTF-8?B?aW5uZXJIVE1MPw==?= Date: Wed, 12 Aug 2015 19:18:43 +0200 Lines: 38 Message-ID: References: <20150812093317.00f07bc8@ravenworks.netz> <5808078.Mu2qdKNV6c@PointedEars.de> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net PB3lSvWF1BXUIuVzRMEAFQPcIbu9iNsjC3fQlTMVkmh6TXpE1o Cancel-Lock: sha1:hUrbAz2X5sPCLWfG1bZ7XwZ1eZU= User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3.1) Gecko/20030425 Hamster/2.1.0.1538 X-Accept-Language: en-us, en In-Reply-To: <5808078.Mu2qdKNV6c@PointedEars.de> Xref: csiph.com de.comp.lang.javascript:4697 Thomas 'PointedEars' Lahn wrote: > Sascha Hüdepohl wrote: >>var target, i; >>for (i = 0; i < 10; i += 1) { >> if (window['FooBar' + i]) { >> target = document.getElementById('FooBar' + i); >> if (target) { >> target.textContent = window['FooBar' + i]; >>[…] > > Nein, sondern > > target.textContent = this['FooBar' + i]; [...] > > > window != global. Das mit “window” referenzierte Host-Objekt hat spezielle > Eigenschaften, die das in ECMAScript spezifizierte globale Objekt nicht hat. > Wer diese beiden Objekte verwechselt, muss sich nicht wundern, wenn Dinge > passieren, die er nicht möchte. Zum Beispiel wäre es bei diesem Ansatz > fatal, wenn eine der globalen Variablen “location” hiesse: eine Zuweisung an > die gleichnamige Eigenschaft von “window” löst eine Navigation aus. Sofern wir in einem Browser sind, ist 'this === window'. Die Magie des Objektes geht auch nicht weg, wenn man 'this' statt 'window' schreibt, 'this.location = "..."' löst ebenfalls eine Navigation aus. >>Schöner fände ich es wenn die Variablen in einem Container >>zusammengefasst sind: > > Das ist nicht nur eleganter, sondern auch weniger fehlerträchtig. Eben. Das muss der Weg sein. Nicht darum herumzuworkarounden, wie man denn das globale Objekt bezeichnet. Stefan