1. JavaScript об'єкти
У javaScript існує кілька видів об'єктів:
-
вбудовані об'єкти
-
об'єкти браузера
-
об'єкти, які програміст створює самостійно (призначені для користувача)
Вбудовані об'єкти - це зумовлені об'єкти number, string, array ... Більшість з яких вже були розглянуті в попередніх уроках.
Про об'єкти браузера в javaScript мова піде в подальших уроках.
А зараз час познайомитися з призначеними для користувача об'єктами в javaScript.
-
Object (об'єкти)
-
Number (обробка чисел)
-
String (обробка рядків)
-
Array (масиви)
-
Math (математичні формули, функції і константи)
-
Date (робота з датами і часом)
-
RegExp
-
Global (його властивості Infinity, NaN, undefined)
-
Function
2. JavaScript створення об'єктів
Існує 2 способи створення об'єктів:
-
Використання ініціалізатора об'єкта (або створення об'єктів-колекцій)
-
Використання конструктора об'єктів (створення класів-конструкторів)
-
Створення об'єктів-колекцій
var ім'я_об'екта = {властивість: значення, властивість: значення,...};
або
var ім'я_об'екта = new Object();
ім'я_об'екта.властивість = значення;// точкова нотація
ім'я_об'екта["властивість"] = значення;// дужковa нотаціяВажливо: Варто зауважити, що в якості значення не можна використовувати цифру:
myObg.rost = 2 // НЕ МОЖНА!
myObg.rost = "2" // можнаПриклад: Створити об'єкт з властивостями (значення "Microsoft Internet Explorer") і (значення «9.0»)
Рішення 1:
var myBrowser = {name: "Microsoft Internet Explorer", version: "9.0"};
alert(myBrowser.name);
alert(myBrowser.version);або
Рішення 2:var myBrowser = new Object();
myBrowser.name= "Microsoft Internet Explorer";
myBrowser["version"]= "9.0";Приклад: Створити два об'єкти-колекції ( і ) з властивостями і . Вивести значення властивості color у об'єкта car і властивості brand у об'єкта moto.
Рішення:
var car = new Object();
car.color = "Білий";
car.maxSpeed=220;
car.brand = "Nissan";
document.write("У машини колір: " + car.color);
var moto = {
color: "Синій",
horsePower: 130,
brand: "Yamaha"
};
document.write("У мотоцикла виробник: " + moto.brand);Цикл «для кожного» при роботі з об'єктами в javascript
Зовсім трохи про цю конструкції вже було сказано в одному з попередніх уроків.
Цикл в javascript призначений для проходу по масивах, колекціям і об'єктам.Розглянемо приклад використання :
var myBrowser = new Object();
myBrowser.name= "Microsoft Internet Explorer";
myBrowser["version"]= "9.0";
for (var a in myBrowser)
{
alert(a); // Перебирає властивості об'єкта myBrowser. Видасть name, version
alert(myBrowser[a]); // Видасть значення властивостей
} -
Створення класів-конструкторів
Створення класів-конструкторів здійснюється в два етапи:
-
спочатку створюється клас за допомогою конструктора;
-
потім створюється новий об'єкт на основі конструктора.
Створення класу об'єктів за допомогою конструктора (створення класів-конструкторів):
function Iм'я_класу_об'єктів(св-во1, св-во2){
this.св-во1 = значення;
this.св-во2 = значення;
}Створення нового об'єкта на основі конструктора для класу об'єктів:
var ім'я_об'єкта = new ім'я_класу("значення_св-ва1","значення_св-ва2");
або
var ім'я_об'єкта =new ім'я_класу();
ім'я_об'єкта.св-во1="значення_св-ва1";
ім'я_об'єкта.св-во2="значення_св-ва2";Назва класу конструктора прийнято писати з великої літери!
Розглянемо приклад:
Приклад: Створення конструктора для класу об'єктів і створення об'єкта на основі цього класу: створити об'єкт з властивостями (значення "Microsoft Internet Explorer") і (значення «9.0»)
Рішення:
function Browser (name, version){
this.name = name;
this.version = version;
}
var myBrowser = new Browser("Microsoft Internet Explorer","9.0");
alert(myBrowser.name);
alert(myBrowser.version);Отже, порівняємо ще раз з першим способом створення об'єктів:
// об'єкт-колекція
var myBrowser = {name: "Microsoft Internet Explorer", version: "7.0"};
alert(myBrowser.name);
alert(myBrowser.version);
// наступний рядок неприпустимий!
var myBrowser1 = new myBrowser ("MozillaFirefox","3.5"); // НЕ ВІРНО!!! -
Важливо: У разі створення об'єкта-колекції не можна створювати екземпляр класу, так як це не клас
Завдання js 6_1. Створити об'єкт , який містить відомості про співробітників деякої фірми, такі як , , , (використовувати функцію-конструктор і ключове слово ). Створити екземпляр об'єкта
3. Доступ до властивостей об'єктів в javaScript
ім'я_об'єктаім'я_властивості
agent007.Iм'я = "Бонд"; alert(agent007.Iм'я);
Що таке властивість за замовчуванням
Функція-конструктор дозволяє наділити об'єкт властивостями за замовчуванням. Ці властивості будуть у кожного створюваного екземпляра об'єкта
function Student(name, phone) {
this.name=name;
this.phone="22-22-22"; // властивість за замовчуванням!
}
var ivanov = new Student("Ivan","33-33-33");
alert (ivanov.name); // видасть "Ivan"
alert (ivanov.phone); // видасть "22-22-22"
ivanov.phone="33-33-33"; // міняємо св-во за замовчуванням
alert (ivanov.phone); // видасть "33-33-33"
Додавання властивостей до класу об'єктів
Значення властивості можна додати для:
-
конкретного екземпляра об'єкта;
-
цілого класу об'єктів
Додавання властивостей до конкретного (екземпляру) об'єкту:
ім'я_об'екта ім'я_властивості значення
function Student(biology, phisics) {
this.biology=biology;
this.phisics=phisics;
}
var ivanov = new Student();
ivanov.biology = "відмінно";
Важливо: У прикладі властивість задається для конкретного об'єкта, а не для класу об'єктів!
Додавання властивостей до класу об'єктів:
ім'я_класуім'я_властивості значення
Student.prototype.biology = "відмінно";
Важливо: У прикладі властивість (за замовчуванням) задається для класу об'єктів! Це зроблено з допомогою ; прототип - об'єкт, який визначає структуру
Student.prototype.email="jb@gmail.com";
alert(ivanov.email); // видасть "jb@gmail.com"
Приклад: Приклад виведення всіх властивостей об'єкта зі значеннями
var summerTour={
turkey : 2000,
spain : 3000,
egypt : 1000
};
var option;
for (option in summerTour){
document.write(option + ':' + summerTour[option] + '<br/>');
}
Javascript прототипи (введення)
Розглянемо приклад того, як будуються javascript класи на прототипах
Приклад: Створити клас об'єкта (автомобіль) з трьома властивостями: (назва), (модель), (колір). Створити екземпляр класу з конкретними значеннями властивостей. Потім через створений екземпляр додати до класу властивість (власник) з конкретним значенням за замовчуванням (Іванов). Вивести всі значення властивостей створеного екземпляра
function Car(name, model, color) { /* Конструктор об'єкта car */
this.name = name;
this.model = model;
this.color = color;
}
var myCar=new Car;
myCar.name="Мерс";
myCar.model="600";
myCar.color="green";
Car.prototype.owner = "Іванов"; /* додаємо нову властивість */
alert(myCar.name+" "+myCar.model+" "+myCar.color+" "+myCar.owner);
Завдання js 6_2. Для завдання js 6_1 через створений екземпляр об'єкта додайте нову властивість до класу об'єктів
4. JavaScript методи об'єктів
Створення методу об'єкта
Приклад: Додати до конструктора об'єктів метод , який буде виводити на екран оглядача інформацію про властивості цього об'єкта
-
Методи об'єкта створюються на основі функції і додаються в конструктор класу
function showBrowser() {
document.write("Оглядач: " + this.name + " " + this.version);
}
function Browser(name, version) {
this.name = name;
this.version = version;
this.aboutBrowser = showBrowser;
}
var myBrowser=new Browser("Microsoft Internet Explorer",8.0);
myBrowser.aboutBrowser(); -
Методи об'єкта створюються на основі функції і додаються в конструктор класу
function Browser(name, version) {
this.name = name;
this.version = version;
this.aboutBrowser = function(){
document.write("Оглядач: " + name + " " + version);
}
}
var myBrowser=new Browser("Microsoft Internet Explorer",8.0);
myBrowser.aboutBrowser();
Завдання js 6_3. Створити клас об'єктів () для роботи туристичної фірми з методом підрахунку вартості поїздки з розрахунку: кількості осіб * кількість днів * тариф країни. Створити екземпляр об'єкта зі значеннями властивостей. Вивести всі властивості об'єкта на екран. Метод об'єкта створювати на основі функції.
5. Javascript прототипи (Prototype) вбудованих об'єктів
Додавання властивостей і методів до вбудованиx об'єктів (прототип)
JavaScript - мова ООП (об'єктно-орієнтованого програмування), що базується на прототипах.
Прототип - об'єкт, який визначає структуру
Розглянемо роботу з прототипами на прикладі:
/ * Зміна прототипу * /
// Додавання властивості за замовчуванням вбудований об'єкту
String.prototype.color = "black";
// Додавання (зміна) методу до вбудованого об'єкту
String.prototype.write = stringWrite;
function stringWrite(){
document.write('<span style="color:' + this.color + '">');
document.write(this.toString());
document.write('</span>');
}
// використовуємо змінений клас
var s = new String("Це рядок");
s.color = "red";
s.write();
Важливо: До об'єкту Math не можна додавати властивості і методи
Завдання js 6_4. Доповніть код програми для виконання завдання: До вбудованого класу додати метод , який виводить слово «Ура!» Як заголовок (тег ), зазначеного користувачем рівня (prompt).
Рівень заголовка (1, 2 ... 6) можна додати в вигляді властивості класу .
Згадаймо, як повинні виглядати теги заголовків в HTML:
Заголовок
Доповніть код:
String.prototype.uroven="1";
...
function printZagolovok(){
...
...
}
var s=new ...;
...
Резюме: порівняємо ще раз два варіанти використання об'єктів в JavaScript:
-
Створення об'єктів-колекцій
var myBook=new Object();
myBook.title="книга";
myBook.price="200";
alert(myBook["title"]); // 1-й варіант звернення до властивостей
alert(meBook.price); // 2-й варіант звернення до властивостей
function myBookShow()
{
for (var i in myBook)
{
document.write(i+": "+myBook[i]+"<br>"); // Перебір властивостей
}
}
myBook.show=myBookShow;
myBook.show(); -
Створення класів-конструкторів
function myBook(title,price){
// визначення властивостей
this.title = title;
this.price = price;
// визначення методу
this.show = show;
function show()
{
document.write("Назва: " + this.title);
document.write("Ціна: " + this.price);
}
}
var book = new myBook("Книга", 200);
book.show();
Завдання js 6_5. Створити об'єкт-колекцію , який містить відомості про співробітника деякої фірми, такі як , , , і відображає дані про цього працівника (створити метод об'єкта для відображення даних)
Важливо: Для об'єкта-колекції неможливо створювати екземпляри. Властивості і методи створюються один раз для одного об'єкта
Завдання js 6_6. Визначити клас . Визначити властивості: , , метод . Додайте 4 пункту меню у вигляді списку (тег )
*Складне: кількість пунктів меню, їх назви і url необхідно запитувати у користувача
Порада: для виведення в методі рядки на екран скористайтеся методом
6. Об'єкти javaScript Location, Navigator, Screen
JAVASCRIPT NAVIGATOR
Розглянемо використання об'єкта в javaScript на прикладі:
Приклад: Написати функцію, яка виводить на екран:
-
назва браузера
-
мова браузера
-
назва ОС
-
чи включені кукі
-
чи підключений користувач до інтернету
-
Роздільна здатність екрану
-
глибину кольору
-
адреса завантаженої сторінки
var option;
// виведення всіх властивостей об'єкта navigator
for (option in navigator){
document.write(option + ' : ' + navigator[option]+ ' <br />');
}
// функція виведення конкретних властивостей об'єкта navigator
function userDetails() {
document.write("<br><br>Назва браузера: " + navigator.userAgent + "<br />");
document.write("Mова браузера: " + navigator.language + "<br />");
document.write("Назва ОС: " + navigator.oscpu + "<br />");
document.write("Чи включені кукі: " + navigator.cookieEnabled + "<br />");
document.write("Чи підключений Інтернету: " + navigator.nLine + "<br />");
}
userDetails();
ОБ'ЄКТ JAVASCRIPT SCREEN
Розглянемо використання об'єкта в javaScript на прикладі:
function userDetails() {
document.write("Дозвіл: " + screen.width + " x " + screen.height + "<br />");
document.write("Глибина кольору: " + screen.colorDepth + " x " + screen.height + "<br />");
}
userDetails();
ОБ'ЄКТ JAVASCRIPT LOCATION
Розглянемо використання об'єкта в javaScript на прикладі:
function userDetails() {
document.write("Адреса завантаженої сторінки: " + location.href + "<br />");
}
userDetails();
Висновки:
-
За допомогою виразів з ключовим словом ви можете створювати екземпляри об'єктів, тобто їх конкретні втілення.
-
Більш того, завдяки властивості javascript є можливість додавати до об'єктів нові властивості і методи, придумані користувачем і відсутні у вихідних вбудованих об'єктах.
-
Створення об'єктів можна використовувати для створення баз даних.