globalThis

Die Eigenschaft globalThis gibt das globale Objekt der obersten Ebene zur├╝ck.

Eigenschaftsattribute von globalThis
Schreibbar ja
Aufz├Ąhlbar nein
Konfigurierbar ja

Beschreibung

In der Vergangenheit war f├╝r den Zugriff auf das globale Objekt in verschiedenen JavaScript-Umgebungen eine unterschiedliche Syntax erforderlich. Im Web kann man window (en-US), self (en-US) oder frames (en-US) verwenden - aber in Web Workers funktioniert nur self. In Node.js funktioniert keines der aufgez├Ąhlten, und es muss stattdessen global verwendet werden.

Das Schl├╝sselwort this kann in Funktionen verwendet werden, die nicht im Strict-Mode ausgef├╝hrt werden, ist jedoch in Modulen und in Funktionen, die im Strict-Mode ausgef├╝hrt werden, undefined. Es kann Function('return this')() verwendet werden, aber Umgebungen, die eval() (en-US) deaktiviert haben, wie etwa durch CSP (en-US) in Browsern, verhindern die Verwendung von Function auf diese Weise.

Die Eigenschaft globalThis bietet eine Standardmethode f├╝r den Zugriff auf den globalen Wert this (und damit auf das globale Objekt selbst) in verschiedenen Umgebungen. Im Gegensatz zu ├Ąhnlichen Eigenschaften wie window und self funktioniert es garantiert in Fenster- und Nicht-Fenster-Kontexten. Auf diese Weise k├Ânnen Sie auf konsistente Weise auf das globale Objekt zugreifen, ohne wissen zu m├╝ssen, in welcher Umgebung der Code ausgef├╝hrt wird. Um sich den Namen zu merken, denken Sie daran, dass this im globalen Bereich globalThis ist.

HTML und WindowProxy

In vielen Engines ist globalThis ein Verweis auf das tats├Ąchliche globale Objekt. In Webbrowsern wird jedoch aus Gr├╝nden der iframe- und fenster├╝bergreifenden Sicherheit ein Proxy um das tats├Ąchliche globale Objekt (das nicht direkt verwendet werden kann). Diese Unterscheidung ist im allgemeinen Sprachgebrauch selten relevant, aber wichtig zu beachten.

Benennung

Mehrere andere popul├Ąre Namen wie self und global wurden aus dem Vorschlag entfernt, da sie die Kompatibilit├Ąt mit existierendem Code potenziell brechen k├Ânnten. Siehe das Dokument "Naming Constraints" f├╝r weitere Details.

Beispiele

Umgebungs├╝bergreifend den globalen Kontext finden

Vor globalThis war Function('return this')() die einzige zuverl├Ąssige, plattform├╝bergreifende Methode, um das globale Objekt f├╝r eine Umgebung abzurufen. Dies f├╝hrt jedoch in einigen Einstellungen zu CSP Verst├Â├čen. Daher verwendet es6-shim eine Pr├╝fung wie diese:

var getGlobal = function () {
  if (typeof self !== 'undefined') { return self; }
  if (typeof window !== 'undefined') { return window; }
  if (typeof global !== 'undefined') { return global; }
  throw new Error('unable to locate global object');
};

var globals = getGlobal();

if (typeof globals.setTimeout !== 'function') {
  // no setTimeout in this environment!
}

Mit der Verf├╝gbarkeit von globalThis, ist die zus├Ątzliche umgebungs├╝bergreifende Suche nach dem Global Kontext nicht mehr notwendig:

if (typeof globalThis.setTimeout !== 'function') {
  // no setTimeout in this environment!
}

Spezifikationen

Specification
ECMAScript (ECMA-262)
Die Definition von 'globalThis' in dieser Spezifikation.

Browserkompatibilit├Ąt

BCD tables only load in the browser

Siehe auch