Klasy w JavaScript ułatwiają modelowanie obiektów z realnego świata przez zapewnienie zrozumiałej i uporządkowanej składni do tworzenia obiektów i zarządzania dziedziczeniem. Używając klas, możemy łatwo zdefiniować szablony dla nowych obiektów, takich jak komputery. Klasy te mogą również korzystać z dziedziczenia do rozszerzania i modyfikowania zachowań bazowych.
Definiowanie klasy bazowej
Zacznijmy od zdefiniowania klasy Computer
, która będzie naszą klasą bazową. Ta klasa będzie zawierać podstawowe właściwości wspólne dla wszystkich komputerów, takie jak marka, model i rok produkcji.
class Computer {
constructor(brand, model, year) {
this.brand = brand;
this.model = model;
this.year = year;
}
displayDetails() {
console.log(`Marka: ${this.brand}, Model: ${this.model}, Rok: ${this.year}`);
}
}
Tworzenie instancji klasy
Teraz możemy stworzyć instancję naszej klasy Computer
, reprezentującą konkretny komputer.
let myComputer = new Computer("Dell", "XPS 15", 2021);
myComputer.displayDetails(); // Marka: Dell, Model: XPS 15, Rok: 2021
Dziedziczenie i rozszerzanie klasy
Załóżmy, że chcemy teraz rozróżnić komputery stacjonarne od laptopów. Możemy stworzyć dwie klasy, które dziedziczą z klasy Computer
: Desktop
i Laptop
, dodając specyficzne dla nich właściwości lub metody.
class Laptop extends Computer {
constructor(brand, model, year, batteryLife) {
super(brand, model, year); // Wywołanie konstruktora klasy bazowej
this.batteryLife = batteryLife;
}
displayBatteryLife() {
console.log(`Żywotność baterii: ${this.batteryLife} godzin`);
}
}
let myLaptop = new Laptop("Apple", "MacBook Pro", 2020, 10);
myLaptop.displayDetails(); // Marka: Apple, Model: MacBook Pro, Rok: 2020
myLaptop.displayBatteryLife(); // Żywotność baterii: 10 godzin
Metody statyczne
Podobnie jak w przypadku klas dotyczących samochodów, możemy dodawać metody statyczne do naszych klas komputerowych, które wykonują operacje ogólne, niezwiązane z konkretnymi instancjami.
class ComputerUtils {
static compareByYear(computerA, computerB) {
return computerA.year - computerB.year;
}
}
let olderComputer = new Computer("HP", "Pavilion", 2018);
let newerComputer = new Computer("Lenovo", "ThinkPad", 2022);
console.log(ComputerUtils.compareByYear(olderComputer, newerComputer)); // -4
Podsumowanie
Klasy w JavaScript zapewniają potężne i elastyczne narzędzia do modelowania obiektów. Przykład z komputerami demonstruje, jak łatwo możemy zdefiniować różne typy komputerów i zarządzać nimi przy użyciu dziedziczenia i metod statycznych. Wykorzystanie klas w projektach JavaScript sprawia, że kod jest bardziej zorganizowany, czytelny i łatwiejszy do utrzymania.
Jeżeli zależy Tobie na szybszej nauce polecam mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.