Zum Hauptinhalt springen

`globalThis`

· 2 Minuten Lesezeit
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Wenn Sie schon einmal JavaScript für die Verwendung in einem Webbrowser geschrieben haben, haben Sie möglicherweise window verwendet, um auf das globale this zuzugreifen. In Node.js haben Sie möglicherweise global verwendet. Wenn Sie Code geschrieben haben, der in beiden Umgebungen funktionieren muss, haben Sie möglicherweise festgestellt, welche von diesen verfügbar ist, und diese dann verwendet – aber die Liste der zu überprüfenden Bezeichner wächst mit der Anzahl der Umgebungen und Anwendungsfälle, die Sie unterstützen möchten. Das gerät schnell außer Kontrolle:

// Ein naiver Versuch, das globale `this` zu erhalten. Verwenden Sie dies nicht!
const getGlobalThis = () => {
if (typeof globalThis !== 'undefined') return globalThis;
if (typeof self !== 'undefined') return self;
if (typeof window !== 'undefined') return window;
if (typeof global !== 'undefined') return global;
// Hinweis: Dies könnte immer noch das falsche Ergebnis zurückgeben!
if (typeof this !== 'undefined') return this;
throw new Error('Unable to locate global `this`');
};
const theGlobalThis = getGlobalThis();

Weitere Einzelheiten dazu, warum der obige Ansatz unzureichend ist (sowie eine noch kompliziertere Technik), finden Sie unter a horrifying globalThis polyfill in universal JavaScript.

Der globalThis Vorschlag führt einen einheitlichen Mechanismus ein, um das globale this in jeder JavaScript-Umgebung (Browser, Node.js oder etwas anderes?) unabhängig vom Ziel des Scripts (klassisches Script oder Modul?) zuzugreifen.

const theGlobalThis = globalThis;

Beachten Sie, dass moderner Code möglicherweise überhaupt keinen Zugriff auf das globale this benötigt. Mit JavaScript-Modulen können Sie Funktionen deklarativ mit import und export verwenden, anstatt mit globalem Zustand zu arbeiten. globalThis ist jedoch weiterhin nützlich für Polyfills und andere Bibliotheken, die globalen Zugriff benötigen.

globalThis Unterstützung