Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. globalThis

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

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 ⁨январь 2020 г.⁩.

Глобальное свойствоglobalThis содержит значение глобальногоthis, который является глобальным объектом.

Интерактивный пример

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

Синтаксис

globalThis

Описание

Исторически, для доступа к глобальному объекту использовался разный синтаксис в разных средах JavaScript. В вебе вы могли использоватьwindow,self илиframes, но вWorker можно использовать толькоself. В Node.js ничего из этого не работает, поэтому вы должны использоватьglobal.

Ключевое словоthis можно использовать внутри функций в нестрогом режиме. Но в строгом режиме внутри функций и в Модуляхthis равняетсяundefined. Вы можете использоватьFunction('return this')(), но среды, которые отключаютeval(), такие какCSP в браузерах, препятствуют использованиюFunction таким способом.

СвойствоglobalThis даёт возможность стандартного доступа к глобальному значениюthis (и как следствие, к глобальному объекту) вне зависимости от окружения. В отличии от похожих свойств, таких какwindow иself, оно гарантирует работу как в среде, где естьwindow, так и в среде, где его нет. Таким образом вы можете получить доступ к глобальному объекту даже не зная в какой среде будет запущен код. Чтобы помочь запомнить название, просто запомните, что глобальное значениеthis равноglobalThis.

HTML и WindowProxy

Во многих движкахglobalThis будет ссылкой на фактический глобальный объект, но в веб-браузерах из-за соображений безопасности iframe и cross-window он ссылается наProxy вокруг фактического глобального объекта (который вы не можете получить прямым доступом). Это различие редко актуально в обычном использовании, но его важно знать.

Название

Некоторые другие популярные имена, такие какself иglobal были исключены из рассмотрения из-за того, что они могут нарушать совместимость с существующим кодом. Смотритедокумент по планированию именования для большей информации.

Примеры

ДоglobalThis единственным кросс-платформенным путём получения глобального объекта в любой среде былоFunction('return this')(). Однако, это нарушаетCSP в некоторых случаях. Например,es6-shim делает такую проверку:

js
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") {  // в данном окружении не существует setTimeout!}

СglobalThis дополнительный поиск глобального объекта в разных средах больше не нужен:

js
if (typeof globalThis.setTimeout !== "function") {  // в данном окружении не существует setTimeout!}

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-globalthis

Совместимость с браузерами

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp