CodeGym /Kursy /Frontend SELF PL /Konstruktory i metody

Konstruktory i metody

Frontend SELF PL
Poziom 39 , Lekcja 5
Dostępny

6.1 Konstruktory klas

Konstruktory i metody klas są podstawowymi elementami programowania obiektowego w JavaScript. Pozwalają na tworzenie i inicjalizację obiektów, a także definiowanie ich zachowań. Poniżej omówimy, jak działają konstruktory i metody klas oraz jak je używać.

Co to jest konstruktor?

Konstruktor to specjalna metoda klasy, która jest wywoływana przy tworzeniu nowej instancji klasy. Służy do inicjalizacji obiektu, ustawiania wartości jego właściwości i wykonywania innych zadań początkowych.

Definiowanie konstruktora

Konstruktor jest definiowany z użyciem słowa kluczowego constructor. Wewnątrz konstruktora za pomocą słowa kluczowego this można odwoływać się do właściwości i metod obiektu.

Składnia:

    
      class ClassName {
        constructor(parametry) {
          // Inicjalizacja obiektu
        }
      }
    
  

Przykład:

W klasie Person metoda constructor przyjmuje dwa parametry: name i age.

Te parametry są używane do inicjalizacji właściwości name i age tworzonego obiektu.

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); // Wyświetli: Alice
      console.log(person2.age);  // Wyświetli: 25
    
  

Konstruktor domyślny

Jeśli konstruktor nie jest jawnie zdefiniowany, JavaScript automatycznie tworzy pusty konstruktor domyślny.

Przykład:

JavaScript
    
      class Animal {}

      const animal = new Animal();
      console.log(animal); // Wyświetli zawartość klasy Animal {}
    
  

4.2 Metody klas

Metody klas są definiowane wewnątrz ciała klasy i zapewniają funkcjonalność dla obiektów tworzonych przez tę klasę. Metody są automatycznie dodawane do prototypu klasy, co pozwala wszystkim instancjom klasy dziedziczyć i używać ich.

Składnia:

    
      class ClassName {
        constructor(parametry) {
          // Inicjalizacja obiektu
        }
        
        metoda1() {
          // Ciało metody
        }
        
        metoda2() {
          // Ciało metody
        }
      }
    
  

Przykład:

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} drove ${distance} miles. Total mileage: ${this.mileage}`);
        }

        getDetails() {
          return `${this.brand} ${this.model}, Mileage: ${this.mileage}`;
        }
      }

      const myCar = new Car('Toyota', 'Camry');
      myCar.drive(50); // "Toyota Camry drove 50 miles. Total mileage: 50"

      console.log(myCar.getDetails()); // "Toyota Camry, Mileage: 50"
    
  

Wyjaśnienie:

  • W klasie Car zdefiniowane są dwie metody: drive() i getDetails()
  • Metoda drive() zwiększa przebieg samochodu i wyświetla informację o pokonanej odległości
  • Metoda getDetails() zwraca łańcuch znaków z informacją o samochodzie

6.3 Prywatne metody

Wraz z wprowadzeniem nowych specyfikacji ECMAScript pojawiła się możliwość tworzenia prywatnych metod i właściwości, które są niedostępne poza klasą. Do tego celu używa się symbolu # jako części nazwy.

Przykład prywatnych metod i właściwości:

JavaScript
    
      class BankAccount {
        #balance = 0;

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

        #validateAmount(amount) {
          if (amount <= 0) {
            throw new Error('Amount must be positive.');
          }
        }

        deposit(amount) {
          this.#validateAmount(amount);
          this.#balance += amount;
          console.log(`Deposited ${amount}. New balance: ${this.#balance}`);
        }

        withdraw(amount) {
          this.#validateAmount(amount);
          if (amount > this.#balance) {
            throw new Error('Insufficient funds.');
          }
          this.#balance -= amount;
          console.log(`Withdrew ${amount}. New balance: ${this.#balance}`);
        }

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

      const account = new BankAccount(100);
      account.deposit(50); // Wyświetli: Deposited 50. New balance: 150
      account.withdraw(30); // Wyświetli: Withdrew 30. New balance: 120
      console.log(account.getBalance()); // Wyświetli: 120

      // Próba dostępu do prywatnej metody lub właściwości wywoła błąd
      account.#balance; // SyntaxError
      account.#validateAmount(50); // SyntaxError
    
  
1
Опрос
Wprowadzenie do klas,  39 уровень,  5 лекция
недоступен
Wprowadzenie do klas
Wprowadzenie do klas
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION