Классы в JavaScript

В данном уроке Мы поговорим уже непосредственно про Объектно Ориентированное Программирование в JS. А именно разберём что такое классы в JavaScript.

В стандартном JS который сейчас поддерживается в любых браузерах нет такого понятия как: классы. Однако есть такое понятие как: функций.

В данном языке функций играют очень большую роль, потому что с помощью них можно делать всё что угодно.

Первые классы в JavaScript-е

Обычно называния функций пишутся  большой буквой в начале слова.

var User = function (name) {
    this.name = name; // определили поля name
    this.getName = function() {
        console.log("Имя: ", this.name);
    }
    // и определили функцию getName() котороя просто выводит в консоль текущее имя
};

Ещё давайте будем определять имя по умолчанию:

var User = function (name) {
    this.name = name || 'Ivan'; // это конструкция означает что если name не будет передан, то данное значение будет == Ivan
    this.getName = function() {
        console.log("Имя: ", this.name);
    }
};

Если создадим объект и вызовем функцию getName():

var user = new User('Valeriu'); // использовали ключевое слово new для создания объекта
user.getName();

То результат будет следующим:

И это правильный результат. То есть функцию сработала нормально.

Если посмотрим на объект класса User

console.log(user);

То увидим это:

Расширяемость класса в JavaScript

На самом деле такие конструкций не очень верны (как выше написали). Потому что Мы в конструкторе начинаем перечислять какие-то функций и.т.д. что опять-же не очень корректно.

Ещё особенность данного языка в том что при создание объекта класса, для каждого объекта будет создаватся функций. Это снизит работоспособность и быстро-действие приложения.

Для того чтоб расширять классы в JavaScript или расширять какие-то поля, существует другая конструкция, более правильная:

var User = function (name) {
    this.name = name || 'Ivan';
};

User.prototype = {
    getName: function() {
        console.log("Имя: ", this.name);
    }
}; // формат JSON

var user = new User();
user.getName();

Результат, как и ожидали, не меняется:

Желаю Вам успехов!

Valeriu :