вбудовані об'єкти
Вбудовані об'єкти зручні для виконання різних операцій з рядками, календарними датами, масивами, числами і так далі. Вони звільняють програміста від виконання різних рутинних операцій на зразок перетворення рядків або обчислення математичних функцій.
Як працювати з вбудованими об'єктами? Досить просто. Програма створює реалізації об'єктів, а потім звертається до властивостей і методів об'єктів. Як приклад, що має практичне значення, розглянемо документ HTML, в якому відображається поточна дата і час.
Лістинг 2.1.
Створюваний таким чином об'єкт Data инициализируется поточної локальної день, встановлений у користувача (а не на сервері Web, з якого був завантажений відповідний документ HTML). У наступному рядку формується текстовий рядок дати:
Значення календарного числа, номера місяця й року тут виходить за допомогою методів getDate, getMonth і getYear, відповідно. Ці методи викликаються для об'єкта dt, що містить поточну дату.
Текстовий рядок дати виводиться в документ HTML за допомогою методу write, визначеного в об'єкті document: Об'єкт Date містить також інформацію про поточний час. Ця інформація витягується для відображення за допомогою методів getHours, getMinutes і getSeconds (відповідно, години, хвилини і секунди): Подивитися приклад роботи даного скрипта
об'єкти браузера
Ієрархія об'єктів браузера
На малюнку схематично показана ієрархія об'єктів браузера.
Об'єкт window знаходиться в корені ієрархії. Коли в вікно браузера завантажується документ HTML, всередині цього об'єкту створюються інші об'єкти - document. parent. frame. location і top.
Якщо у вікно браузера завантажується документ HTML з фреймами, то для кожного фрейма створюється окреме вікно, причому це вікно створюється як об'єкт window.
Якщо в документі є форми, то вони також представляються у вигляді ієрархічного набору об'єктів. Об'єкт-форма може містити в собі такі об'єкти, як кнопки, перемикачі, поля для введення текстової інформації.
Події, пов'язані з об'єктами
Наприклад, з об'єктом window пов'язані події onLoad і onUnload. Перше з цих подій виникає, коли браузер завершує завантаження вікна і всіх розташованих в ньому фреймів (якщо ці фрейми визначені у вікні). Друга подія виникає, коли користувач завершує роботу з документом, закриваючи вікно браузера або перемикаючись на інший документ.
Об'єкти на базі класів, створюваних програмістом
Перш за все займемося створенням власного класу з назвою myRecord. Нехай поки в ньому не буде методів, додамо їх пізніше. Шуканий клас створюється наступним чином:
Неважко помітити, що опис даного класу є ні що інше, як функція конструктора.
Зверніть увагу, що конструктор ініціалізує властивість з ім'ям secure, записуючи в нього значення false. Відповідний параметр в конструкторі не передбачений, що цілком допустимо.
Об'єкти створюються за допомогою оператора new. Конструктору передаються параметри для ініціалізації властивостей створюваних об'єктів.
Що ж стосується властивості з ім'ям secure, то в об'єкті rec2 воно инициализируется вже після створення останнього. У нього записується значення true. Властивість secure об'єкта rec1 не змінюється, тому в ньому зберігається значення false.
Тепер додамо в певний клас нові методи з іменами printTableHead, printTableEnd і printRecord. Перші два з цих методів виводять в документ HTML, відповідно, початковий і кінцевий фрагмент таблиці, а третій - рядки таблиці, які відображають вміст записів. В скороченому вигляді нове визначення класу myRecord представлено нижче:
Тут перед визначенням конструктора розташовані визначення для функцій-методів нашого класу. Крім цього, в конструктор додано визначення нових властивостей: Ці властивості зберігають посилання на методи, визначені вище. Після такого визначення класу можна створювати об'єкти і звертатися до певних методів: Наведемо повний вихідний текст вийшов програми.
Лістинг 2.2.
Визначення нового класу myRecord і його методів розташоване в області заголовка документа HTML, як це прийнято робити.
Метод printTableHead виводить в документ HTML заголовок таблиці. Зовнішній вигляд цього заголовка залежить від вмісту властивостей об'єкта. Перш за все метод printTableHead перевіряє властивість secure, отримуючи його значення за допомогою ключового слова this:
Тут це ключове слово означає, що необхідно використовувати властивість того об'єкта, для якого був викликаний метод printTableHead. Якщо вміст властивості secure одно true, в текстову змінну szSec записується рядок "(Secure)". Якщо ж воно дорівнює false, в цю змінну заноситься рядок "(Unsecure)", причому для рядка встановлюється червоний колір.
Далі метод printTableHead виводить в документ HTML оператор
Останній метод, визначений в класі, називається printRecord. Він друкує вміст перших чотирьох властивостей об'єкта як рядок таблиці, визначеної в документі HTML щойно описаної функцією printTableHead. Зверніть увагу, що вміст властивостей об'єкта друкується похилим шрифтом, для чого ми викликаємо метод italics:
У другій частині сценарію, розташованої в тілі документа HTML, створюється два об'єкти rec1 і rec2 на базі класу myRecord, а потім встановлюється властивість secure об'єкта rec2 в стан true.
Далі сценарій послідовно виводить в документ HTML дві таблиці, відповідні створеним об'єктам, викликаючи для цього методи printTableHead, printRecord і printTableEnd.