Класи в javascript

Створення конструктора, дозволяє зробити більш прозорою роботу з великою кількістю однотипних (одноманітних) об'єктів.

Властивості і методи об'єктів

Коли об'єкти створюються через <> або через Object (), то контроль за назвами властивостей ускладнюється. Створюючи 10 або 20 однотипних об'єктів (наприклад товари в магазині або ігрові об'єкти) можна припуститися помилки в назві властивості, що призведе до некоректної роботи скрипта. Ця проблема може бути вирішена використанням конструкторів.

конструктори

Зазвичай (але не обов'язково!) Функція конструктор називається з великої літери. В якості аргументів передаються майбутні властивості конкретного екземпляра об'єкта. Самі властивості задаються через звернення до ключового слова this.

Після створення конструктора, окремі об'єкти створюються оператором new і викликом функції-конструктора.

Приклад опису конструктора

  1. function Card (from, to)
  2. this.from = from;
  3. this.to = to;
  4. >
  5. var card1 = new Card ( "Вашингтон", "Пекін");
  6. var card2 = new Card ( "Пекін", "Москва");

У прикладі створюється конструктор Card (), оголошуються дві змінні card1 і card2, і створюються об'єкти з назвами пунктів руху. Тепер можна звернутися до властивостей from і to, об'єкта card2. card2.to, буде дорівнює "Москва".

У стандартних типів даних також є конструктори: Object (), String (), Number () та інші.

Працювати з прототипами вбудованих конструктором потрібно обережно, не завжди потрібно додавати нові властивості, наприклад масивів. Зазвичай додавання властивостей / методів виробляють у користувача конструкторів.

Приклад роботи з прототипом конструктора Card

  1. Card.prototype.price = 2e5;
  2. alert (card2.price);

Також, через прототип екземплярів об'єктів можна привласнювати методи. Це дуже зручно, оскільки функція реалізує метод не зберігається в кожному об'єкті, а викликається у прототипу конструктора.

спадкування

  1. function Card (from, to)
  2. this.from = from;
  3. this.to = to;
  4. >
  5. Card.prototype.show = function ()
  6. for (var p in this)
  7. console.log (this [p]);
  8. >
  9. function SuperCard (from, to, comment)
  10. this.from = from;
  11. this.to = to;
  12. this.comment = comment;
  13. >
  14. SuperCard.prototype = new Card ( "Пекін", "Москва");
  15. SuperCard.prototype.constructor = SuperCar;
  16. var scard = new SuperCard ( "Санкт-Петербург", "Москва", "Плацкарт, №23");
  17. scard.show ();

В 9й рядку описується конструктор, який розширює Card. Розширення здійснюється зарахунок присвоєння в прототип конструктора примірника об'єкта Card. Тепер, звертаючись до методу show () з об'єкта scard, ми викликаємо батьківські метод show ().

Розширення стандартних типів

За допомогою prototype можна додати нові властивості або методи для всіх об'єктів стандартних типів. Розширення стандартних конструкторів ідея не завжди хороша - всі об'єкти даного конструктора придбають нові властивості.

оператор instanceof

Щоб перевірити, створювався об'єкт за допомогою конкретного конструктора, використовується оператор instanceof

приклад перевірки

  1. alert (scard instanceof SuperCard);
  2. alert (scard instanceof Card);

Схожі статті