В этом руководстве вы узнаете, как работать с объектом 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