JavaRush /Курси /Frontend SELF UA /Конструктори та методи

Конструктори та методи

Frontend SELF UA
Рівень 39 , Лекція 5
Відкрита

6.1 Конструктори класів

Конструктори та методи класів є основними елементами об'єктно-орієнтованого програмування в JavaScript. Вони дозволяють створювати та ініціалізувати об'єкти, а також визначати їх поведінку. Нижче ми розглянемо, як працюють конструктори та методи класів, а також як їх використовувати.

Що таке конструктор?

Конструктор — це спеціальний метод класу, який викликається при створенні нового екземпляру класу. Він використовується для ініціалізації об'єкта, встановлення значень його властивостей і виконання інших початкових задач.

Визначення конструктора

Конструктор визначається з використанням ключового слова constructor. Всередині конструктора за допомогою ключового слова this можна звертатися до властивостей та методів об'єкта.

Синтаксис:

    
      class ClassName {
        constructor(параметри) {
          // Ініціалізація об'єкта
        }
      }
    
  

Приклад:

В класі Person метод constructor приймає два параметри: name і age.

Ці параметри використовуються для ініціалізації властивостей name і age створюваного об'єкта.

JavaScript
    
      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
      }

      const person1 = new Person('Alice', 30);
      const person2 = new Person('Bob', 25);

      console.log(person1.name); // Виведе: Alice
      console.log(person2.age);  // Виведе: 25
    
  

Конструктор за замовчуванням

Якщо конструктор не визначений явно, JavaScript автоматично створює порожній конструктор за замовчуванням.

Приклад:

JavaScript
    
      class Animal {}

      const animal = new Animal();
      console.log(animal); // Виведе вміст класу Animal {}
    
  

6.2 Методи класів

Методи класів визначаються всередині тіла класу і надають функціональність для об'єктів, створених цим класом. Методи автоматично додаються в прототип класу, що дозволяє всім екземплярам класу успадковувати і використовувати їх.

Синтаксис:

    
      class ClassName {
        constructor(параметри) { // Ініціалізація об'єкта } 
        метод1() { // Тіло методу } 
        метод2() { // Тіло методу }
      }
    
  

Приклад:

JavaScript
    
      class Car {
        constructor(brand, model) {
          this.brand = brand;
          this.model = model;
          this.mileage = 0;
        }

        drive(distance) {
          this.mileage += distance;
          console.log(`${this.brand} ${this.model} проїхав ${distance} миль. Загальний пробіг: ${this.mileage}`);
        }

        getDetails() {
          return `${this.brand} ${this.model}, Пробіг: ${this.mileage}`;
        }
      }

      const myCar = new Car('Toyota', 'Camry');
      myCar.drive(50); // "Toyota Camry проїхав 50 миль. Загальний пробіг: 50"

      console.log(myCar.getDetails()); // "Toyota Camry, Пробіг: 50"
    
  

Пояснення:

  • В класі Car визначені два методи: drive() та getDetails()
  • Метод drive() збільшує пробіг автомобіля і виводить інформацію про пройдений шлях
  • Метод getDetails() повертає рядок з інформацією про автомобіль

6.3 Приватні методи

З введенням нових специфікацій ECMAScript з'явилася можливість створювати приватні методи та властивості, які недоступні за межами класу. Для цього використовується символ # як частина імені.

Приклад приватних методів і властивостей:

JavaScript
    
      class BankAccount {
        #balance = 0;

        constructor(initialBalance) {
          this.#balance = initialBalance;
        }

        #validateAmount(amount) {
          if (amount <= 0) {
            throw new Error('Сума повинна бути позитивною.');
          }
        }

        deposit(amount) {
          this.#validateAmount(amount);
          this.#balance += amount;
          console.log(`Депоновано ${amount}. Новий баланс: ${this.#balance}`);
        }

        withdraw(amount) {
          this.#validateAmount(amount);
          if (amount > this.#balance) {
            throw new Error('Недостатньо коштів.');
          }
          this.#balance -= amount;
          console.log(`Знято ${amount}. Новий баланс: ${this.#balance}`);
        }

        getBalance() {
          return this.#balance;
        }
      }

      const account = new BankAccount(100);
      account.deposit(50); // Виведе: Депоновано 50. Новий баланс: 150
      account.withdraw(30); // Виведе: Знято 30. Новий баланс: 120
      console.log(account.getBalance()); // Виведе: 120

      // Спроба доступу до приватного методу або властивості викличе помилку
      account.#balance; // SyntaxError
      account.#validateAmount(50); // SyntaxError
    
  
1
Опитування
Знайомство з класами, рівень 39, лекція 5
Недоступний
Знайомство з класами
Знайомство з класами
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ