Об'єкт window
window, це глобальний об'єкт браузера, який представляє вікно вкладки, де виконується JavaScript. Він є кореневим об'єктом для всього браузерного оточення, і саме через нього доступні всі глобальні змінні, функції та сам document.
Теорія
TL;DR
window, це об'єкт поточного вікна або вкладки браузера.- Він містить
document, тобто DOM-дерево сторінки. - Він містить методи керування вікном: відкриття, закриття, прокручування.
- Він містить таймери
setTimeoutіsetInterval. - Він містить браузерні API:
localStorage,sessionStorage,history,location,navigator,console. - Глобальні
var-змінні стають властивостямиwindow, аletіconst, ні. window, це все оточення вкладки, аdocument, лише вміст сторінки.
Швидкий приклад
console.log(window.document); // access to the DOM
console.log(window.location.href); // the page URL
console.log(window.innerWidth); // browser viewport widthУ браузері майже все «живе» всередині
window.
Що таке window
window, це об'єкт, який описує поточне вікно браузера. Усередині нього зібрано:
- саму веб-сторінку (
document); - методи керування вікном (відкриття, закриття, прокручування тощо);
- таймери (
setTimeout,setInterval); - API браузера (
localStorage,history,locationта інші); - усі глобальні змінні, наприклад оголошені через
var.
window як глобальний об'єкт
Коли ви пишете:
alert("Привіт");це те саме, що:
window.alert("Привіт");Майже всі глобальні функції та властивості насправді належать window. Те саме стосується змінних, оголошених через var:
var x = 10;
console.log(window.x); // 10Але змінні, оголошені через let і const, у window не додаються:
let y = 5;
console.log(window.y); // undefinedВони потрапляють до окремого лексичного запису глобальної області, тому доступні за іменем, але не як властивість window.
Основні властивості та об'єкти всередині window
| Властивість / Об'єкт | Що робить |
|---|---|
window.document | HTML-документ (DOM-дерево) |
window.location | Інформація про URL і методи навігації |
window.history | Історія переходів |
window.navigator | Інформація про браузер і систему |
window.localStorage | Постійне сховище даних |
window.sessionStorage | Тимчасове сховище на час сесії |
window.console | Доступ до консолі (console.log) |
window.alert(), confirm(), prompt() | Діалогові вікна |
window.setTimeout() / setInterval() | Таймери |
window.innerWidth, window.innerHeight | Розміри області перегляду |
window.scrollTo(), window.scrollBy() | Прокручування сторінки |
Практичні приклади
Керування навігацією:
console.log(window.location.href); // https://example.com
window.location.href = "https://example.org"; // go to another siteТаймери:
window.setTimeout(() => {
console.log("2 seconds have passed");
}, 2000);Прокручування сторінки:
window.scrollTo({ top: 0, behavior: "smooth" });Сховище:
window.localStorage.setItem("theme", "dark");
console.log(window.localStorage.getItem("theme")); // "dark"Схематично взаємозв'язки виглядають так:
window
|-- document -> HTML document (DOM)
|-- location -> URL and navigation
|-- history -> navigation history
|-- navigator -> browser information
|-- localStorage / sessionStorage -> storage
|-- console
|-- timers (setTimeout, setInterval)
|-- ... and much moreКлючова відмінність від document
| Властивість | window | document |
|---|---|---|
| Що представляє | Вкладку браузера (вікно) | Вміст сторінки (DOM) |
| Глобальний об'єкт | Так | Ні |
| Містить | Усе оточення (DOM, таймери, API) | Лише дерево елементів HTML |
| Приклад | window.innerWidth | document.body |
Типові помилки
- Вважати, що
windowє і в Node.js. Там глобальногоwindowнемає, його роль виконуєglobalабо універсальнийglobalThis. - Очікувати, що
letіconstз'являться уwindow. Вони не стають його властивостями, на відміну відvar. - Плутати
windowіdocument:document, це лише одна з властивостейwindow, дерево елементів сторінки. - Створювати глобальну змінну з іменем, яке вже зайняте у
window(наприкладname,top,length,status), і потім дивуватися дивній поведінці. - Читати
window.innerWidthяк ширину екрана. Це ширина області перегляду; ширина екрана, цеscreen.width.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.