HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В этом уроке мы познакомимся с window. Это глобальный объект, предоставляемый браузером.</p>
1 <p>В этом уроке мы познакомимся с window. Это глобальный объект, предоставляемый браузером.</p>
2 <p>Через него происходит управление окнами (вкладками) в браузере. Он содержит функции для открытия вкладки, управления положением страницы и многим другим:</p>
2 <p>Через него происходит управление окнами (вкладками) в браузере. Он содержит функции для открытия вкладки, управления положением страницы и многим другим:</p>
3 <p>Объект window доступен в консоли DevTools. Попробуем вызвать метод из примера выше там.</p>
3 <p>Объект window доступен в консоли DevTools. Попробуем вызвать метод из примера выше там.</p>
4 <p>Вот несколько примеров его возможностей:</p>
4 <p>Вот несколько примеров его возможностей:</p>
5 <p>Кроме того, внутри window находится объект document. Мы сможем использовать его при работе с содержимым страницы в последующих уроках.</p>
5 <p>Кроме того, внутри window находится объект document. Мы сможем использовать его при работе с содержимым страницы в последующих уроках.</p>
6 <p>Объект window задает глобальный контекст выполнения. Тег window хранит все остальные глобально доступные свойства и объекты внутри себя. Когда мы вызываем глобальные функции, такие как alert() или console.log(), браузер ищет их в объекте window. Другими словами, мы фактически вызываем window.alert().</p>
6 <p>Объект window задает глобальный контекст выполнения. Тег window хранит все остальные глобально доступные свойства и объекты внутри себя. Когда мы вызываем глобальные функции, такие как alert() или console.log(), браузер ищет их в объекте window. Другими словами, мы фактически вызываем window.alert().</p>
7 <p>То же самое относится и ко всем другим функциям, используемым напрямую и без импорта:</p>
7 <p>То же самое относится и ко всем другим функциям, используемым напрямую и без импорта:</p>
8 <h2>Опасность глобального состояния</h2>
8 <h2>Опасность глобального состояния</h2>
9 <p>Наличие объекта window - это техническая реализация от JavaScript, на которую не стоит полагаться при разработке.</p>
9 <p>Наличие объекта window - это техническая реализация от JavaScript, на которую не стоит полагаться при разработке.</p>
10 <p>Рассмотрим такой код:</p>
10 <p>Рассмотрим такой код:</p>
11 <p>Установка свойства в window автоматически делает это свойство доступным из любой точки кода браузера. Другими словами, мы создали<strong>глобальную переменную</strong>.</p>
11 <p>Установка свойства в window автоматически делает это свойство доступным из любой точки кода браузера. Другими словами, мы создали<strong>глобальную переменную</strong>.</p>
12 <p>Такие переменные создают много проблем при разработке. Нам не совсем понятно, откуда они берутся и кто их изменяет.</p>
12 <p>Такие переменные создают много проблем при разработке. Нам не совсем понятно, откуда они берутся и кто их изменяет.</p>
13 <p>На глобальные переменные нельзя полагаться. Есть вероятность, что в них появятся изменения, что часто приводит к ошибкам в работе.</p>
13 <p>На глобальные переменные нельзя полагаться. Есть вероятность, что в них появятся изменения, что часто приводит к ошибкам в работе.</p>
14 <p>Кроме того, на веб-страницах можно встретить различные скрипты, не связанные друг с другом. Это могут быть различные счетчики аналитических систем, маркетинговые инструменты и другие подобные вещи. Все они имеют доступ к одному и тому же window.</p>
14 <p>Кроме того, на веб-страницах можно встретить различные скрипты, не связанные друг с другом. Это могут быть различные счетчики аналитических систем, маркетинговые инструменты и другие подобные вещи. Все они имеют доступ к одному и тому же window.</p>
15 <p>Из-за этого мы можем оказаться в такой ситуации: мы устанавливаем свойства в window в одном скрипте и случайно нарушаем работу другого скрипта, который использует то же самое глобальное свойство.</p>
15 <p>Из-за этого мы можем оказаться в такой ситуации: мы устанавливаем свойства в window в одном скрипте и случайно нарушаем работу другого скрипта, который использует то же самое глобальное свойство.</p>
16 <p>В хорошо написанном коде объект window напрямую никогда не встречается. Но знать о его существовании важно для того, чтобы понимать, как JavaScript функционирует в браузерах.</p>
16 <p>В хорошо написанном коде объект window напрямую никогда не встречается. Но знать о его существовании важно для того, чтобы понимать, как JavaScript функционирует в браузерах.</p>