Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. globalThis

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

globalThis

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Januar 2020⁩.

Die globale EigenschaftglobalThis enthält denglobalenthis-Wert, der normalerweise demglobalen Objekt ähnelt.

Probieren Sie es aus

function canMakeHTTPRequest() {  return typeof globalThis.XMLHttpRequest === "function";}console.log(canMakeHTTPRequest());// Expected output (in a browser): true

Wert

Das globalethis-Objekt.

Eigenschaften vonglobalThis
Schreibbarja
Aufzählbarnein
Konfigurierbarja

Hinweis:Die EigenschaftglobalThis ist konfigurierbar und beschreibbar, sodass Code-Autoren diese verstecken können, wenn nicht vertrauenswürdiger Code ausgeführt wird, um das globale Objekt nicht offenzulegen.

Beschreibung

Historisch betrachtet, erforderte der Zugriff auf das globale Objekt unterschiedliche Syntax in verschiedenen JavaScript-Umgebungen. Im Web können Siewindow,self oderframes verwenden – aber inWebarbeitern funktioniert nurself. In Node.js funktioniert keiner dieser Ansätze, stattdessen muss manglobal verwenden. Das Schlüsselwortthis konnte innerhalb von Funktionen verwendet werden, die im nicht-strikten Modus ausgeführt werden, aber in Modulen und in Funktionen, die im strikten Modus ausgeführt werden, istthisundefined. Sie können auchFunction('return this')() verwenden, aber Umgebungen, dieeval() deaktivieren, wieCSP in Browsern, verhindern die Verwendung vonFunction auf diese Weise.

Die EigenschaftglobalThis bietet eine standardisierte Methode, um auf den globalenthis-Wert (und damit auf das globale Objekt selbst) in unterschiedlichen Umgebungen zuzugreifen. Im Gegensatz zu ähnlichen Eigenschaften wiewindow undself funktioniert sie garantiert sowohl in Fenster- als auch in Nicht-Fenster-Kontexten. Auf diese Weise können Sie auf das globale Objekt auf konsistente Weise zugreifen, ohne wissen zu müssen, in welcher Umgebung der Code ausgeführt wird. Um Ihnen zu helfen, sich den Namen zu merken: Im globalen Scope ist derthis-WertglobalThis.

Hinweis:globalThis ist im Allgemeinen dasselbe Konzept wie das globale Objekt (d.h. wenn Sie Eigenschaften zuglobalThis hinzufügen, werden sie zu globalen Variablen) – dies ist der Fall für Browser und Node – aber Hosts dürfen einen anderen Wert fürglobalThis bereitstellen, der nichts mit dem globalen Objekt zu tun hat.

HTML und das WindowProxy

In vielen Engines wirdglobalThis eine Referenz auf das eigentliche globale Objekt sein, aber in Webbrowsern verweist es aufgrund von Sicherheitsaspekten bei iframes und fensterübergreifendem Zugriff auf einenProxy um das eigentliche globale Objekt (auf das Sie nicht direkt zugreifen können). Diese Unterscheidung ist in der üblichen Nutzung selten relevant, aber wichtig zu wissen.

Benennung

Mehrere andere beliebte Namensoptionen wieself undglobal wurden aufgrund ihres Potentials, die Kompatibilität mit bestehendem Code zu brechen, aus der Betrachtung genommen. Weitere Details finden Sie im„Namensgebung“-Dokument des Sprachvorschlags.

globalThis ist buchstäblich der globalethis-Wert. Es ist derselbe Wert wie derthis-Wert in einer nicht-strikten Funktion, die ohne ein Objekt aufgerufen wird. Es ist auch der Wert vonthis im globalen Scope eines Skripts.

Beispiele

Suche nach dem Globalen in verschiedenen Umgebungen

Normalerweise muss das globale Objekt nicht explizit angegeben werden – seine Eigenschaften sind automatisch als globale Variablen zugänglich.

js
console.log(window.Math === Math); // true

Ein Fall, in dem das globale Objekt jedoch explizit angesprochen werden muss, ist, wenn daraufgeschrieben wird, normalerweise zwecksPolyfills.

VorglobalThis war der einzige zuverlässige plattformübergreifende Weg, das globale Objekt für eine Umgebung zu erhalten,Function('return this')(). Allerdings führt dies in einigen Einstellungen zuCSP-Verletzungen, so dass Autoren eine stückweise Definition wie diese verwenden würden (leicht angepasst aus demoriginalen core-js-Quellcode):

js
function check(it) {  // Math is known to exist as a global in every environment.  return it && it.Math === Math && it;}const globalObject =  check(typeof window === "object" && window) ||  check(typeof self === "object" && self) ||  check(typeof global === "object" && global) ||  // This returns undefined when running in strict mode  (function () {    return this;  })() ||  Function("return this")();

Nachdem das globale Objekt erhalten wurde, können wir neue globale Eigenschaften darauf definieren. Zum Beispiel das Hinzufügen einer Implementierung fürIntl:

js
if (typeof globalObject.Intl === "undefined") {  // No Intl in this environment; define our own on the global scope  Object.defineProperty(globalObject, "Intl", {    value: {      // Our Intl implementation    },    enumerable: false,    configurable: true,    writable: true,  });}

MitglobalThis verfügbar, ist die zusätzliche Suche nach dem Globalen in verschiedenen Umgebungen nicht mehr notwendig:

js
if (typeof globalThis.Intl === "undefined") {  Object.defineProperty(globalThis, "Intl", {    value: {      // Our Intl implementation    },    enumerable: false,    configurable: true,    writable: true,  });}

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-globalthis

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp