Усі об'єкти мови JavaScript мають властивість prototype, яка дозволяє створювати нові конструктори об'єкта. За допомогою створення нових конструкторів об'єктів можна додавати нові методи в існуючі об'єкти, наприклад створювати власні методи опрацювання рядків. У наведеній нижче програмі описується функція countChars(), яка підраховує кількість появ заданого символа у рядку. Нова властивість додається в об'єкт String за допомогою оператора:
String.prototype.count=countChars;
У цьому випадку count — новий метод об'єкта String. Після створення новий метод count можна застосовувати разом із будь-яким об'єктом Coring.
Лістинг 2.11
<HTML>
<HEAD>
<SCRIPT>
<!--
function countChars(c) {
var hits=0;
for (var counter=0; counter<=this.length; counter++) {
// значення 'this' - посилання на рядок, який
// задається у виразі,
// в якому викликається ця функція
aChar=this.substring(counter, counter++)
if (aChar==c) hits++;
}
return (hits);
}
var sentence=new String("Об'єкти, що визначаються" +
"користувачем, створюються з допомогою оператора New. ");
String.prototype.count=countChars;
var numChar=sentence.count("a");
alert ("У даному реченні є "+numChar+ "літер a");
//-->
</SCRIPT>
</HEAD>
</HTML>
Отже, функції-конструктори (методи) додаються в об'єкт не так, як нові властивості, а через звернення до властивості prototype. Проте при зверненні до доданих методів властивість prototype вказувати не обов'язково.
На завершення, зазначимо, що програмістам досить рідко доводиться створювати власні об'єкти. Справа в тому, що об'єкт створюється функцією-конструктором, яка описується на конкретній сторінці, і, як наслідок, все, що створюється в рамках даної сторінки, не може бути успадковане іншими сторінками. Необхідні досить вагомі причини, щоб автор Web-вузла розробляв бібліотеки класів об'єктів користувача. Значно простіше писати функції для кожної сторінки.
Контрольні запитання
1.Яке призначення мови JavaScript?
2. Що називають об'єктом, методами та властивостями об'єкта?
3. Що називається класом?
4. Які ви знаєте способи використання скриптів у HTML-документі?
5. Назвіть типи даних JavaScript.
6. Що називають виразом?
7. Назвіть арифметичні оператори JavaScript.
8. Які ви знаєте логічні оператори та оператори порівняння?
9. Що називають функцією?
10. Який формат запису умовного оператора?
11. Який формат запису оператора вибору?
12. Який формат запису операторів циклу?
13. Назвіть ієрархію об'єктів JavaScript.
14.Які ви знаєте властивості та методи об'єкта window? 15.Які ви знаєте властивості та методи об'єкта document? 16. Яким чином створюються та використовуються масиви? 17.Як звернутися у скрипті до конкретного об'єкта, що міститься у HTML-документі? 18. Назвіть події, що можуть бути опрацьовані у скрипті.