В этом руководстве вы узнаете, как работать с объектом JavaScript globalThis.
ES2020 представил объект globalThis, который предоставляет стандартный способ доступа к глобальному объекту в разных средах.
Исторически у JavaScript был глобальный объект с разными именами в разных средах.
В веб-браузерах глобальным объектом является
windowилиframes.
Однако Web Workers API не имеет объекта window, поскольку у него нет контекста просмотра. Следовательно, Web Workers API использует self как глобальный объект.
Node.js, с другой стороны, использует ключевое слово global для ссылки на глобальный объект.
| Среда | Global |
|---|---|
| Веб-браузеры | this |
| Веб-воркеры | self |
| Node.js | global |
Если вы пишете код JavaScript, который работает в разных средах и нуждается в доступе к глобальному объекту, вы должны использовать другой синтаксис, например, window, frames, self или global.
Чтобы стандартизировать это, ES2020 представил globalThis, доступный в разных средах.
Например, следующий код проверяет, поддерживает ли текущая среда Fetch API:
const canFetch = typeof globalThis.fetch === 'function'; console.log(canFetch);
Код проверяет, является ли функция fetch() свойством глобального объекта. В веб-браузерах globalThis является объектом window. Поэтому, если вы запустите этот код в современном веб-браузере, canFetch будет иметь значение true.
Следующий код возвращает true в веб-браузере:
globalThis === window
Выход:
true
