Path: csiph.com!goblin3!goblin.stu.neva.ru!news-1.dfn.de!news.dfn.de!news.informatik.hu-berlin.de!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: Thu, 13 Aug 2015 20:09:53 +0200 Lines: 43 Message-ID: References: <20150812093317.00f07bc8@ravenworks.netz> <5808078.Mu2qdKNV6c@PointedEars.de> <2473063.o0E3eExaDO@PointedEars.de> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net XRFxaQ4gpQsR3S6qodMpZgjMggMuV2DsaM/7UyqbGh8j93I+qp Cancel-Lock: sha1:5OAA6L83BxynqvA1+vdkgOlCZIA= 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: <2473063.o0E3eExaDO@PointedEars.de> Xref: csiph.com de.comp.lang.javascript:4704 Thomas 'PointedEars' Lahn wrote: > Stefan Reuther wrote: >>Thomas 'PointedEars' Lahn wrote: >>>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'. > > (Schon *oft* diskutiert und widerlegt. Bitte erst lesen, dann denken, dann > posten.) Nein. Aufgrund der Frames-Semantik ist nur die Unterscheidung > nicht trivial möglich. Meine Browser antworten mir auf die Frage 'javascript:window===this' mit 'true'. Dass man das durch Instanziierung beliebig komplizierter Dokumente und ggf. darin enthaltener Skripte ändern kann, ist wenig überraschend. >>Die Magie des Objektes geht auch nicht weg, wenn man 'this' statt 'window' >>schreibt, 'this.location = "..."' löst ebenfalls eine Navigation aus. > > Die Aussage mag zwar kontextabhängig richtig sein (in der Console ist sie > das beispielsweise nachweislich nicht), die Schlussfolgerung daraus aber > ist falsch. Ein Objekt dient hier nur als Proxy für das andere, und als > Sonderfall hat das eine Objekt (das globale) eine host-definierte > Eigenschaft passenden Namens und Wertes (“window”). "Proxy". Ich hätte ja gesagt, 'this' ist wie 'window' eine Referenz auf ein bestimmtes Objekt, aber man kann natürlich auch neue Begriffe erfinden. Was nichts daran ändert, dass die Magie des 'window'-Objektes nicht, wie von dir suggeriert, weggeht, wenn man es als 'this' oder 'global' referenziert. Stefan