Konstruktory obiektów w JavaScript
Musisz tworzyć wiele obiektów tego samego typu. JavaScript oferuje kilka sposobów na sprawne ich tworzenie.
Funkcje konstruktora
Konstruktor to funkcja służąca do tworzenia nowych obiektów. Aby uniknąć błędów, stosuj poniższe zasady:
- Zaczynaj nazwę funkcji wielką literą. Pomaga to zidentyfikować ją jako konstruktor.
- Używaj słowa kluczowego
new. Jeśli o nim zapomnisz, funkcja zostanie wykonana jak zwykła funkcja i nie utworzy obiektu.
Wartości domyślne
W konstruktorze możesz ustawić wartości domyślne. Dzięki temu obiekty pozostaną poprawne, nawet jeśli pominiesz niektóre szczegóły.
Przykład:
function Person(name = "Unknown", age = 0) {
this.name = name;
this.age = age;
}
Jeśli wywołasz new Person(), imię przyjmie wartość "Unknown", a wiek wyniesie 0.
Object.create()
Możesz użyć Object.create(), aby utworzyć nowy obiekt na podstawie istniejącego. Wykorzystuje to dziedziczenie oparte na prototypach. Zamiast kopiować dane, nowy obiekt łączy się z oryginalnym prototypem.
Optymalizacja pamięci
Nie umieszczaj metod wewnątrz samego konstruktora. Jeśli to zrobisz, każdy nowy obiekt otrzyma własną kopię tej metody, co marnuje pamięć.
Zamiast tego dodawaj metody do prototypu. W ten sposób wszystkie obiekty będą korzystać z jednej, wspólnej wersji metody.
Przykład:
Person.prototype.greet = function() {
console.log("Hello " + this.name);
};
Dziedziczenie
Klasy pozwalają jednej klasie dziedziczyć po innej. W klasie potomnej użyj słowa kluczowego super() aby wywołać konstruktor klasy nadrzędnej. Pozwala to klasie potomnej na dostęp do właściwości klasy nadrzędnej.
Zalety stosowania konstruktorów:
- Wielokrotne użycie kodu: Twórz wiele obiektów według jednego wzorca.
- Czysta logika: Przechowuj konfigurację obiektu w jednym miejscu.
- Łatwa inicjalizacja: Ustawiaj konkretne wartości podczas tworzenia.
- Dziedziczenie: Buduj złożone obiekty na bazie prostszych.
Source: https://www.geeksforgeeks.org/javascript/js-constructor-method/ Source: https://www.w3schools.com/js/js_object_constructors.asp
Full post: https://dev.to/kamalesh_ar_6252544786997/object-constructors-in-javascript-2e96