Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 50
3.7Das globale Objekt
ОглавлениеIn den vorangegangenen Abschnitten wurden die primitiven Datentypen und Werte von JavaScript erläutert. Objekttypen – Objekte, Arrays und Funktionen – werden im weiteren Verlauf des Buchs in eigenständigen Kapiteln behandelt. Es gibt allerdings ein sehr wichtiges Objekt, das wir uns bereits jetzt anschauen müssen. Das globale Objekt ist ein reguläres JavaScript-Objekt, das aber einen sehr wichtigen Zweck erfüllt: Die Eigenschaften dieses Objekts sind die global definierten Identifier, die in einem JavaScript-Programm zur Verfügung stehen. Wenn der JavaScript-Interpreter startet (oder ein Webbrowser eine neue Seite lädt), erstellt er ein neues globales Objekt und gibt ihm einen anfänglichen Satz von Eigenschaften, die Folgendes definieren:
globale Konstanten wie undefined, Infinity und NaN
globale Funktionen wie isNaN(), parseInt() (siehe 3.9.2) und eval() (siehe 4.12)
Konstruktorfunktionen wie Date(), RegExp(), String(), Object() und Array() (siehe 3.9.2)
globale Objekte wie Math und JSON (siehe 6.8)
Die anfänglichen Eigenschaften des globalen Objekts sind zwar keine reservierten Wörter, verdienen es aber, als solche behandelt zu werden. Mit einigen dieser globalen Eigenschaften haben wir uns in diesem Kapitel bereits befasst. Mit den meisten anderen werden wir uns im weiteren Verlauf dieses Buchs noch auseinandersetzen.
In Node besitzt das globale Objekt eine Eigenschaft namens global, deren Wert das globale Objekt selbst ist. Auf diese Weise können Sie sich in Node-Programmen mit dem Namen global immer auf das globale Objekt beziehen.
In Webbrowsern dient das Window-Objekt als das globale Objekt für den gesamten JavaScript-Code in dem von ihm repräsentierten Browserfenster. Dieses globale Window-Objekt hat eine selbstreferenzielle window-Eigenschaft, mit der man auf das globale Objekt verweisen kann. Das Window-Objekt definiert die globalen Eigenschaften des Sprachkerns von JavaScript und darüber hinaus eine ganze Reihe anderer globaler Eigenschaften, die spezifisch für Webbrowser und clientseitiges JavaScript sind. Webworker-Threads (siehe 15.13) haben ein anderes globales Objekt als das Fenster, mit dem sie verknüpft sind. Im Code eines solchen Workers kann man sich auf dessen globales Objekt mit self beziehen.
ES2020 schließlich definiert globalThis als Standardmethode, um in jedem beliebigen Kontext auf das globale Objekt zu verweisen. Seit Anfang 2020 ist diese Funktion in allen modernen Browsern und in Node implementiert.