< > ↑ Вгору

1. JavaScript об'єкти

У javaScript існує кілька видів об'єктів:

  • вбудовані об'єкти

  • об'єкти браузера

  • об'єкти, які програміст створює самостійно (призначені для користувача)

Вбудовані об'єкти - це зумовлені об'єкти number, string, array ... Більшість з яких вже були розглянуті в попередніх уроках.

Про об'єкти браузера в javaScript мова піде в подальших уроках.

А зараз час познайомитися з призначеними для користувача об'єктами в javaScript.

2. JavaScript створення об'єктів

Існує 2 способи створення об'єктів:

  1. Використання ініціалізатора об'єкта (або створення об'єктів-колекцій)

  2. Використання конструктора об'єктів (створення класів-конструкторів)

  1. Створення об'єктів-колекцій

    var ім'я_об'екта = {властивість: значення, властивість: значення,...};

    або

    var ім'я_об'екта = new Object();
    ім'я_об'екта.властивість = значення;// точкова нотація
    ім'я_об'екта["властивість"] = значення;// дужковa нотація

    Важливо: Варто зауважити, що в якості значення не можна використовувати цифру:

    myObg.rost = 2 // НЕ МОЖНА!

    myObg.rost = "2" // можна

    Приклад: Створити об'єкт  myBrowser  з властивостями  name  (значення "Microsoft Internet Explorer") і  version  (значення «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";

    Приклад: Створити два об'єкти-колекції ( car  і  moto ) з властивостями  color  і  brand  . Вивести значення властивості 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);

    Цикл «для кожного»  for in  при роботі з об'єктами в javascript

    Зовсім трохи про цю конструкції вже було сказано в одному з попередніх уроків.
    Цикл  for in  в javascript призначений для проходу по масивах, колекціям і об'єктам.

    Розглянемо приклад використання  for in  :

    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]); // Видасть значення властивостей
    }

  2. Створення класів-конструкторів

    Створення класів-конструкторів здійснюється в два етапи:

    1. спочатку створюється клас за допомогою конструктора;

    2. потім створюється новий об'єкт на основі конструктора.

    Створення класу об'єктів за допомогою конструктора (створення класів-конструкторів):

    function Iм'я_класу_об'єктів(св-во1, св-во2){
        this.св-во1 = значення;
        this.св-во2 = значення;
    }

    Створення нового об'єкта на основі конструктора для класу об'єктів:

    var ім'я_об'єкта = new ім'я_класу("значення_св-ва1","значення_св-ва2");

    або

    var ім'я_об'єкта =new ім'я_класу();
    ім'я_об'єкта.св-во1="значення_св-ва1";
    ім'я_об'єкта.св-во2="значення_св-ва2";

    Назва класу конструктора прийнято писати з великої літери!

    Розглянемо приклад:

    Приклад:  Створення конструктора для класу об'єктів і створення об'єкта на основі цього класу: створити об'єкт  myBrowser  з властивостями  name  (значення "Microsoft Internet Explorer") і  version  (значення «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. Створити об'єкт  Співробітник  , який містить відомості про співробітників деякої фірми, такі як  Ім'я  ,  Відділ  ,  Телефон  ,  Зарплата  (використовувати функцію-конструктор і ключове слово  this  ). Створити екземпляр об'єкта

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 = "відмінно";

Важливо: У прикладі властивість задається для конкретного об'єкта, а не для класу об'єктів!

Додавання властивостей до класу об'єктів:

ім'я_класу .prototype. ім'я_властивості  =  значення

Student.prototype.biology = "відмінно";

Важливо: У прикладі властивість (за замовчуванням) задається для класу об'єктів! Це зроблено з допомогою  prototype  ; прототип - об'єкт, який визначає структуру

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 класи на прототипах

Приклад: Створити клас об'єкта  Cаr  (автомобіль) з трьома властивостями:  name  (назва),  model  (модель),  color  (колір). Створити екземпляр класу з конкретними значеннями властивостей. Потім через створений екземпляр додати до класу властивість  owner  (власник) з конкретним значенням за замовчуванням (Іванов). Вивести всі значення властивостей створеного екземпляра

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 методи об'єктів

Створення методу об'єкта

Приклад: Додати до конструктора об'єктів  Browser  метод  aboutBrowser  , який буде виводити на екран оглядача інформацію про властивості цього об'єкта

  1. Методи об'єкта створюються на основі функції і додаються в конструктор класу

    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();

  2. Методи об'єкта створюються на основі функції і додаються в конструктор класу

    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. Створити клас об'єктів ( Tour ) для роботи туристичної фірми з методом підрахунку вартості поїздки з розрахунку: кількості осіб * кількість днів * тариф країни. Створити екземпляр об'єкта  turkeyTour  зі значеннями властивостей. Вивести всі властивості об'єкта на екран. Метод об'єкта  розрахунок  створювати на основі функції.

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. Доповніть код програми для виконання завдання: До вбудованого класу  String  додати метод  printMe()  , який виводить слово «Ура!» Як заголовок (тег  h... ), зазначеного користувачем рівня (prompt).
Рівень заголовка (1, 2 ... 6) можна додати в вигляді властивості класу  String  .
Згадаймо, як повинні виглядати теги заголовків в HTML:

Заголовок

Доповніть код:

String.prototype.uroven="1";
...
function printZagolovok(){
...
...
}
var s=new ...;
...

Резюме: порівняємо ще раз два варіанти використання об'єктів в JavaScript:

  1. Створення об'єктів-колекцій

    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();

  2. Створення класів-конструкторів

    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. Визначити клас  MenuItem  . Визначити властивості:  title  ,  url  , метод  show  . Додайте 4 пункту меню у вигляді списку (тег  li )

*Складне: кількість пунктів меню, їх назви і url необхідно запитувати у користувача

Порада: для виведення в методі  show()  рядки на екран скористайтеся методом  document.write() 

6. Об'єкти javaScript Location, Navigator, Screen

JAVASCRIPT NAVIGATOR

Розглянемо використання об'єкта  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

Розглянемо використання об'єкта  Screen  в javaScript на прикладі:

function userDetails() {
    document.write("Дозвіл: " + screen.width + " x " + screen.height + "<br />");
    document.write("Глибина кольору: " + screen.colorDepth + " x " + screen.height + "<br />");
}
userDetails();

ОБ'ЄКТ JAVASCRIPT LOCATION

Розглянемо використання об'єкта  Location  в javaScript на прикладі:

function userDetails() {
    document.write("Адреса завантаженої сторінки: " + location.href + "<br />");
}
userDetails();

Висновки:

  • За допомогою виразів з ключовим словом  new  ви можете створювати екземпляри об'єктів, тобто їх конкретні втілення.

  • Більш того, завдяки властивості javascript  prototype  є можливість додавати до об'єктів нові властивості і методи, придумані користувачем і відсутні у вихідних вбудованих об'єктах.

  • Створення об'єктів можна використовувати для створення баз даних.