- Global object
- Объект window в Браузере
- Получение доступа к Глобальным Переменным
- Объяснение
- Получение доступа к Глобальным Функциям
- Объяснение
- Found a content problem with this page?
- Глобальный объект
- Использование для полифилов
- Итого
- JavaScript: Глобальный объект
- Методы
- Свойства
- Стандартные встроенные объекты
- Стандартные объекты (по категориям)
- Значения
- Функции
- Фундаментальные объекты
- Числа и даты
- Обработка текста
- Индексированные коллекции
- Коллекции по ключу
- Структурированные данные
- Объекты управляющих абстракций
- Рефлексия
- Интернационализация
- Нестандартные объекты
- Прочее
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
Global object
В JavaScript всегда определён глобальный объект. В веб-браузере, когда скрипты создают глобальные переменные, они создаются как свойства глобального объекта. (В Node.js это не так.) Interface глобального объекта зависит от контекста, в котором выполняется скрипт.К примеру:
- В веб-браузере любой код, который не запускается скриптом явно как фоновую задачу, имеет Window в качестве своего глобального объекта. Это покрывает большую часть JavaScript-кода в сети.
- Код, работающий в Worker имеет WorkerGlobalScope объект в качестве своего глобального объекта.
- Скрипты, работающие в Node.js имеют объект, который называется global в качестве своего глобального объекта.
Объект window в Браузере
Объект window — Глобальный Объект в браузере. Доступ к любым Глобальным Переменным или функциям может быть получен как к свойствам объекта window .
Получение доступа к Глобальным Переменным
var foo = "foobar"; foo === window.foo; // Возвращает: true
После определения Глобальной Переменной foo , мы можем получить доступ к его значению прямо с объекта window , использую имя переменной foo в качестве имени свойства Глобального Объекта window.foo .
Объяснение
Глобальная Переменная foo была сохранена в объекте window , подобно следующему примеру:
Получение доступа к Глобальным Функциям
function greeting() console.log("Hi!"); > window.greeting(); // Тоже самое что и обычный вызов: greeting();
Пример выше показывает как Глобальные Функции хранятся в качестве свойств объекта window . Мы создали Глобальную Функцию greeting и вызвали её с помощью объекта window .
Объяснение
Глобальная функция greeting была сохранена в объекте window , подобно следующему примеру:
greeting: function greeting() console.log("Hi!"); >
Found a content problem with this page?
This page was last modified on 20 июл. 2023 г. by MDN contributors.
Your blueprint for a better internet.
Глобальный объект
Глобальный объект предоставляет переменные и функции, доступные в любом месте программы. По умолчанию это те, что встроены в язык или среду исполнения.
В браузере он называется window , в Node.js — global , в другой среде исполнения может называться иначе.
Недавно globalThis был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. Он поддерживается во всех основных браузерах.
Далее мы будем использовать window , полагая, что наша среда – браузер. Если скрипт может выполняться и в другом окружении, лучше будет globalThis .
Ко всем свойствам глобального объекта можно обращаться напрямую:
alert("Привет"); // это то же самое, что и window.alert("Привет");
В браузере глобальные функции и переменные, объявленные с помощью var (не let/const !), становятся свойствами глобального объекта:
var gVar = 5; alert(window.gVar); // 5 (становится свойством глобального объекта)
То же самое касается функций, объявленных с помощью синтаксиса Function Declaration (выражения с ключевым словом function в основном потоке кода, не Function Expression)
Пожалуйста, не полагайтесь на это. Такое поведение поддерживается для совместимости. В современных проектах, использующих JavaScript-модули, такого не происходит.
Если бы мы объявили переменную при помощи let , то такого бы не произошло:
let gLet = 5; alert(window.gLet); // undefined (не становится свойством глобального объекта)
Если свойство настолько важное, что вы хотите сделать его доступным для всей программы, запишите его в глобальный объект напрямую:
// сделать информацию о текущем пользователе глобальной, для предоставления доступа всем скриптам window.currentUser = < name: "John" >; // где угодно в коде alert(currentUser.name); // John // или, если у нас есть локальная переменная с именем "currentUser", // получим её из window явно (безопасно!) alert(window.currentUser.name); // John
При этом обычно не рекомендуется использовать глобальные переменные. Следует применять их как можно реже. Дизайн кода, при котором функция получает входные параметры и выдаёт определённый результат, чище, надёжнее и удобнее для тестирования, чем когда используются внешние, а тем более глобальные переменные.
Использование для полифилов
Глобальный объект можно использовать, чтобы проверить поддержку современных возможностей языка.
Например, проверить наличие встроенного объекта Promise (такая поддержка отсутствует в очень старых браузерах):
Если нет (скажем, используется старый браузер), мы можем создать полифил: добавить функции, которые не поддерживаются окружением, но существуют в современном стандарте.
Итого
- Глобальный объект хранит переменные, которые должны быть доступны в любом месте программы. Это включает в себя как встроенные объекты, например, Array , так и характерные для окружения свойства, например, window.innerHeight – высота окна браузера.
- Глобальный объект имеет универсальное имя – globalThis . …Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как window (браузер) и global (Node.js).
- Следует хранить значения в глобальном объекте, только если они действительно глобальны для нашего проекта. И стараться свести их количество к минимуму.
- В браузерах, если только мы не используем модули, глобальные функции и переменные, объявленные с помощью var , становятся свойствами глобального объекта.
- Для того, чтобы код был проще и в будущем его легче было поддерживать, следует обращаться к свойствам глобального объекта напрямую, как window.x .
JavaScript: Глобальный объект
Все глобальные переменные и функции на самом деле являются свойствами и методами специального объекта, который называется глобальным объектом .
Глобальный объект представляет собою обычный объект, который создаётся автоматически при запуске интерпретатора.
В JavaScript роль глобального объекта играет объект Window. Этот объект имеет свойство window, ссылающееся на сам объект Window. Объект Window одновременно является и глобальным объектом и помимо этого содержит ряд собственных свойств и методов для работы с окном браузера.
В программном коде верхнего уровня сослаться на глобальный объект можно также посредством ключевого слова this :
Поскольку глобальные переменные являются свойствами глобального объекта то, работая с глобальной переменной, на самом деле, мы, работаем со свойствами window:
var num = 10; alert(window.num); // 10
Вместо объявления переменной с помощью ключевого слова var, создать переменную можно и явно указав новое свойства объекту Window:
window.num = 10; alert(num); // 10
Обратите внимание, что несмотря на то, что глобальные переменные на самом деле являются свойствами объекта Window, указывать его перед именем переменной необязательно:
var num = 10; alert(num); // 10 alert(window.num); // 10. Тоже самое, что и alert(num);
Если глобальная переменная объявляется с помощью ключевого слова var или let , создаётся ненастраиваемое свойство, т. е. свойство, которое невозможно удалить с помощью оператора delete :
var num = 10; alert(delete num); // false, переменная не удалена
Если необъявленной переменной присвоить некоторое значение, интерпретатор JavaScript автоматически создаст глобальную переменную. Переменные созданные таким способом, становятся обычными, настраиваемыми свойствами глобального объекта, т. е. могут быть удалены с помощью оператора delete :
num = 10; alert(delete num); // true, переменная удалена
Методы
Метод | Описание |
---|---|
decodeURI() | Возвращает строку, содержащую URI в декодированном виде. |
decodeURIComponent() | Возвращает строку, содержащую часть URI в декодированном виде. |
encodeURI() | Возвращает строку, содержащую URI в закодированном виде. |
encodeURIComponent() | Возвращает строку, содержащую часть URI в закодированном виде. |
eval() | Функция eval() выполняет код, переданный ей в виде строки. Код, переданный функции, выполняется в той области видимости, где была вызвана функция. |
isFinite() | Преобразует аргумент в число (если это необходимо) и возвращает true, если аргумент содержит любое значение отличное от NaN, положительной и отрицательной бесконечности. В этих трех случаях возвращает false. |
isNaN() | Определяет является передаваемый аргумент значением NaN или нет. |
parseFloat() | Анализирует строковый аргумент и возвращает число с плавающей точкой или NaN. |
parseInt() | Анализирует строковый аргумент и возвращает целое число или NaN. |
Свойства
Свойство | Описание |
---|---|
Infinity | Специальное числовое значение представляющее бесконечность. |
NaN | Специально значение, указывающее что значение не является числом (Not a Number). |
undefined | Специальное значение, указывающее на отсутствие значения. Например, переменная, которой не было присвоено значение имеет тип undefined. |
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru
Стандартные встроенные объекты
Эта глава описывает все стандартные встроенные объекты JavaScript, вместе с их методами и свойствами.
Термин «глобальные объекты» (или стандартные встроенные объекты) здесь не следует путать с самим глобальным объектом. Далее в главе под этим обозначением понимаются объекты в глобальном пространстве имён (но только, если не используется строгий режим ECMAScript 5! В противном случае они возвращают undefined ). Сам же глобальный объект в глобальном пространстве имён доступен через оператор this . На самом деле, глобальное пространство имён состоит из свойств глобального объекта (в том числе включая унаследованные свойства, если они есть).
Другие объекты в глобальном пространстве имён создаются либо с помощью пользовательских скриптов, либо предоставляются приложением хоста. Объекты хоста, доступные в контекстах браузера, задокументированы в справке по API (en-US) . Для получения дополнительной информации о различии между DOM и ядром JavaScript, смотрите обзор технологии JavaScript.
Стандартные объекты (по категориям)
Значения
Глобальные свойства, возвращающие простое значение.
Функции
Глобальные функции, возвращающие результат определённой подпрограммы.
- eval()
- uneval() Non-standard
- isFinite()
- isNaN()
- parseFloat()
- parseInt()
- decodeURI()
- decodeURIComponent()
- encodeURI()
- encodeURIComponent()
- escape() Устарело
- unescape() Устарело
Фундаментальные объекты
Общие языковые объекты, функции и ошибки.
Числа и даты
Объекты, имеющие дело с числами, датами и математическими вычислениями.
Обработка текста
Объекты для манипулирования текстом.
Индексированные коллекции
Коллекции, упорядоченные по индексам. Массивоподобные объекты.
Коллекции по ключу
Коллекции объектов по ключу. Элементы обходятся в порядке вставки.
Структурированные данные
Буферы данных и Объектная нотация JavaScript (JavaScript Object Notation).
Объекты управляющих абстракций
Рефлексия
Интернационализация
Дополнения к ядру ECMAScript, отвечающие за функциональность, чувствительную к языку.
Нестандартные объекты
Прочее
Found a content problem with this page?
This page was last modified on 7 нояб. 2022 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.