
Об'єкти користувача JavaScript
Хоча JavaScript не є повноцінною об’єктно-орієнтованою мовою, вона забезпечує механізм для інкапсуляції. Інкапсуляція (encapsulation) — це можливість приховання даних всередині об’єкта. У мові JavaScript можна створити екземпляр родового об’єкта (generic object) і призначити йому атрибути і навіть методи. Наприклад, у наступному фрагменті коду на JavaScript створюється екземпляр родового об’єкту з іменем cartLineItem (один з товарів у віртуальному кошику покупця). За допомогою оператора „крапка” (.) задаються значення чотирьох вказаних користувачем властивостей.
Приклад 5
LineItem= new Object();
LineItem.productID = ‘MG1234’;
LineItem.productName = ‘MGB Roadster (1935)’;
LineItem.qty =1;
LineItem.unitPrice =36000;
Екземпляр LineItem можна використовувати в подальшому в будь-якому сценарії JavaScript з відповідним посиланням:
alert( ‘В вашому кошику є ’ + cartLineItem.qty + ‘ ’ + LineItem.productName);
Для об’єктів можна також визначати методи. Наприклад, наступну функцію total() можна використовувати як метод. Вона звертається до свого об’єкту за допомогою оператора this:
function total(){ return (this.qty * this.unitPrice); }
Доступ до функції здійснюється таким же чином як і до атрибутів.
LineItem.total = total;
Тепер цю функцію можна викликати безпосередньо для об’єкта LineItem:
LineItem= new Object();
LineItem.productID = ‘MG1234’;
LineItem.productName = ‘MGB Mk I Roadster’;
LineItem.qty = 2;
LineItem.unitPrice = 12500;
LineItem.total = total;
document.write(‘<p>’ + LineItem.qty + ‘ ’ + LineItem.productName +‘стоит $’ + LineItem.total() + ‘</p>’);
Прототип в JavaScript нагадує конструктор в С++. Прототип (prototype) — це функція, що створює визначений користувачем об'єкт та ініціалізує його атрибути. Прототип для об’єкта JavaScript повинен також містити функції об’єкта. Прототип об’єкта cartLineItem повинен мати такий вигляд:.
function cartLineItem(id, name, qty, price){
this.productID = id;
this.productName = name;
this.qty = qty;
this.unitPrice = price;
this.total = total;
}
Якщо визначений прототип, то масив екземплярів LineItem можна створити за допомогою наступного фрагменту коду JavaScript:
var LineItem = new Array();
LineItem[0] = new cartLineItem (‘MG123’, ‘MGB Mk I Roadster’, 1, 36000);
LineItem[1] = new cartLineItem (‘AH736’, ‘Austin-Healey Sprite’, 1, 9560);
LineItem[2] = new cartLineItem (‘TS225’, ‘Triumph Spitfire Mk I’, 1, 11000);
Порядок виконання роботи
Проаналізувати умову задачі.
Виконати завдання згідно з завданням.
Результати роботи оформити звітом.
Завдання
1. Створити форму, яка міститиме наступні поля:
ім’я;
прізвище;
адреса, місто, країна та поштовий індекс;
адреса електронної пошти (e-mail).
2. Використовуючи JavaScript, виконати перевірку інформації, введеної в поля форми (e-mail на наявність символу @, ім’я та прізвище повинно містити лише літери, поштовий індекс повинен складатися з 5 цифр).
3. Реалізувати одну з наступних функцій (вибирається згідно з номером у списку)
3.1. Функція, що виводить перші 20 чисел послідовності Фібоначчі (елемент послідовності визначається як сума двох попередніх). Для виводу результатів використати функцію document.write().
3.2. Змінити завдання № 3.2 таким чином, щоб виводився n-й член послідовності Фібоначчі. Використати функцію prompt() для введення числа n.
3.3. Функція, що виводить слова заданого тексту у алфавітному порядку.
3.4. Функція, що виводить задану послідовність чисел в оберненому порядку.
3.5. Функція, що визначає найбільше значення серед заданих чисел.
3.6. Функція, що визначає найменше значення серед заданих чисел.
3.7. Вивести таблицю чисел від 5 до 15 та їх другий та третій ступені, використовуючи функцію alert().
3.8. Змінити сценарій завдання № 3.3 таким чином, щоб користувач міг вибрати, в якому порядку відсортувати слова (в спадному чи висхідному).
3.9. Створити функцію no_zeros(), аргументом якої є масив чисел, а результатом дії — модифікований вхідний масив, який не містить нульових значень.
3.10. Створити функцію e_names(), аргументом якої є масив слів, а результатом дії — кількість слів у вхідному масив, які закінчуються "ie" або "y".
3.11. Створити функцію first_vowel(), аргументом якої є рядок літер, а результатом дії — номер позиції, на якій знаходиться найлівіша гласна літера.
3.12. Створити функцію counter(), аргументом якої є масив чисел, а результатом дії — номера позицій, на яких знаходяться від’ємні елементи та нулі.
3.13. Створити функцію tst_name(), аргументом якої є текстовий рядок, а результатом дії — true, якщо рядок має вигляд: stringl, string2 letter, де string1 та string2 є слова, що складаються з літер нижнього регістру (за виключенням першої літери слова), letter складається з літер верхнього регістру, false — в протилежному випадку.
3.14. Створити функцію row_averages(), аргументом якої є масив масивів чисел (двовимірний масив), а результатом дії — масив, елементами якого є середні значення відповідних елементів вхідного масиву масивів чисел.
3.15. Створити функцію reverser(), аргументом якої є текстовий рядок, а результатом дії — відображення вхідного рядку у протилежному порядку.