Page 92 - 6108
P. 92
Рисунок 3.1 – Ланцюжок областей видимості функцій
Цей ланцюжок області видимості або ланцюжок оточення пов'язаного з
функцією зберігається в об'єкті функції в момент створення. Іншими словами,
вона визначається статично за місцем розташування у вихідному коді. Це
називають лексичною областю видимості.
Є одне виключення із загального правила присвоєння [[Scope]], мають
функції створені через new Function.
При створенні функції з використанням new Function, її властивість
[[Scope]] посилається не на поточний LexicalEnvironment, а на window.
Тема 3.2 Об'єкти
Об'єкт – це головний тип даних JavaScript. Будь-який інший тип даних має
об'єктову «обгортку» (wrapper). Це означає, що перш ніж можна буде отримати
доступ до значення змінної того або іншого типу, відбувається конвертація
змінної в об'єкт, і тільки після цього виконуються дії над значенням. Тип даних
Object сам визначає об'єкти.
Об'єкти JavaScript – це набори властивостей і методів. Властивості об'єктів
– це дані, пов'язанні з об'єктом, а методи – функції для опрацювання даних
об'єкта.
У мові JavaScript є три типи об'єктів: вбудовані об'єкти, об'єкти браузера й
об'єкти на основі класів, створених у ході виконання програми (об’єкти
користувача):
об'єкти браузера, які відповідають тому, що міститься або відбувається
на Web-сторінці у вікні браузеру. Вони створюються браузером при розборі
(парсінгу) HTML-сторінки. Наприклад, window, document, location,
navigator і т. п.;
вбудовані об'єкти. Вони є різними типами даних, властивостями,
методами, властивими самій мові JavaScript, незалежно від вмісту HTML-
сторінки. Наприклад, вбудовані класи об’єктов Array, String, Date, Number,
Function, Boolean, а також вбудований об'єкт Math;
об'єкти користувача. Вони створюються програмістом в процесі
написання сценарію з використанням конструкторів об'єктів (класу).
Об'єкти в JavaScript поєднують в собі два важливих функціонали.
Перший – це асоціативний масив: структура, придатна для зберігання
будь-яких даних
Другий – мовні можливості для об'єктно-орієнтованого програмування.