Преимущества использования классов в программировании, вместо функции конструктор в JavaScript:
JavaScript использует прототипное наследование, благодаря чему каждый объект может наследовать свойства и методы другого объекта. Прототипы - сильная часть языка, однако не всегда понятная. В базовом варианте это выглядит так:
/** * Функция-конструктор для создания объекта Person */ function Person(name, age) { this.name = name; this.age = age; } // Добавление метода greet в прототип объекта Person Person.prototype.greet = function() { console.log(`Привет, меня зовут ${this.name} и мне ${this.age} лет.`); }; // Создание объекта с помощью функции-конструктора const person1 = new Person("Иван", 25); person1.greet(); // "Привет, меня зовут Иван и мне 25 лет."
В этом примере функция Person выступает как конструктор, который создаёт новый объект со свойствами name и age. Метод greet добавляется в прототип объекта, чтобы все объекты, созданные с помощью конструктора Person, могли использовать этот метод.
Однако в современном JavaScript существуют классы, которые предоставляют более удобный и понятный способ создания объектов. Например, определим класс Person, который будет иметь свойства "имя" и "возраст", а также метод "поприветствовать":
class Person { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log(`Привет, меня зовут ${this.name} и мне ${this.age} лет.`); } } // Создание объекта с помощью класса const person1 = new Person("Иван", 25); person1.greet(); // "Привет, меня зовут Иван и мне 25 лет."
В современном JavaScript для настоящей приватности используют символ #:
class Person { #salary; constructor(name, salary) { this.name = name; this.#salary = salary; } getSalary() { return this.#salary; } }
#salary - полностью приватное свойство, к нему нельзя обратиться извне.
Ранее для "приватности" использовали подчёркивание, но это только соглашение:
class Person { constructor(name, salary) { this.name = name; this._salary = salary; } }
_salary - обычное свойство, к нему есть доступ снаружи.
Вывод:
Читайте также: JavaScript: функции-конструкторы, создание объектов и прототипы, Три свойства ООП Объектно-ориентированное программирование