JavaScript oferuje wiele możliwości tworzenia i manipulowania obiektami. Tradycyjne użycie klas i prototypów jest powszechne, ale istnieją również alternatywne podejścia, które często są bardziej elastyczne i prostsze. Ten samouczek pokaże ci, jak skutecznie tworzyć obiekty w JavaScript bez użycia klas. Wykorzystamy podejście Douglasa Crockforda, które opiera się na tworzeniu obiektów na podstawie funkcji i oferuje interesującą perspektywę na Es6 i późniejsze wersje.
Najważniejsze wnioski
- Obiekty mogą być tworzone bez użycia klas i this
- Tworzenie obiektów oparte na funkcjach umożliwia elastyczniejsze i bardziej czytelne struktury kodu
- Dzięki destrukturyzacji obiektów obsługa staje się skuteczniejsza i prostsza
Krok po kroku do stworzenia obiektów bez klas
Rozpocznij od stworzenia funkcji, która zwraca obiekt. Możesz to zrobić, używając podstawowej składni funkcji.

W tym przykładzie definiujemy funkcję createShape. W tej funkcji tworzymy nowy obiekt, który ma różne właściwości, takie jak id, x i y. Możesz również dodać inne metody, aby rozszerzyć funkcjonalność obiektu.
Upewnij się, że przekazujesz parametry, które definiują obiekt, do funkcji. W ten sposób możesz utworzyć instancję obiektu z konkretnymi atrybutami.
Aby uczynić obiekt użytecznym, możesz również zdefiniować metody, które są zintegrowane z obiektem. Na przykład możesz dodać metodę print, która wypisuje właściwości obiektu.

Tu rozszerzasz funkcję createShape o metodę print. Upewnij się, że metoda jest poprawnie zaimplementowana, aby mogła odnosić się do właściwości obiektu.
Kolejnym elementem jest implementacja metody move. Ta metoda może być używana do zmiany współrzędnych x i y obiektu. Nie zapomnij jednoznacznie nazywać parametrów, aby uniknąć nieporozumień.
Możesz również używać funkcji do destrukturyzacji obiektów. Zamiast przekazywać parametry pojedynczo, przekaż po prostu obiekt i użyj destrukturyzacji, aby wyodrębnić właściwości.
Ta technika sprawia, że twój kod nie tylko jest bardziej czytelny, ale także elastyczny. Możesz łatwo dodawać nowe parametry i częściowo usuwać istniejące, nie musząc przepisywać całej funkcjonalności.
Jeśli rozważasz również integrację innych funkcji, możesz zdefiniować drugą funkcję createBaseShape, która implementuje pewne bazowe zachowania i jest wywoływana z pierwszego obiektu.
Screenshot_目330
Dzięki temu rozwiniętemu podejściu możesz uzyskać dostęp do funkcji printBase lub innych funkcji i używać ich bez konieczności stosowania this lub podobnych elementów.
Ostatnią poprawą jest zamrożenie obiektu, aby zapewnić, że jego właściwości nie będą mogły być zmieniane po utworzeniu. Można to osiągnąć, korzystając z metody Object.freeze().
Te techniki pokazują, że istnieje wiele sposobów tworzenia i zarządzania obiektami w JavaScript bez odwoływania się do modelu klas.
Podsumowanie – Obiekty bez klas w JavaScript
W tym samouczku nauczyłeś się, jak skutecznie tworzyć obiekty w JavaScript bez klas. Podejście oparte na funkcjach daje ci dużą elastyczność i kontrolę. Dzięki różnym metodom, takim jak destrukturyzacja i Object.freeze, masz możliwość rozwijania solidnych i łatwych w utrzymaniu struktur, które przynoszą korzyści twojemu kodowi.
Najczęściej zadawane pytania
Jak tworzę obiekt w JavaScript bez klas?Możesz zdefiniować funkcję, która tworzy i zwraca nowy obiekt.
Jakie są zalety tworzenia obiektów opartych na funkcjach?Umożliwia elastyczniejsze zarządzanie obiektami, łatwe rozszerzenia dzięki destrukturyzacji i zapobiega niepożądanym modyfikacjom dzięki Object.freeze.
Czy mogę definiować metody w funkcjach tworzących obiekty?Tak, możesz bezpośrednio tworzyć metody w funkcji zwracającej obiekt.
Czy to podejście całkowicie zastępuje tradycyjny model klas?To alternatywna metoda, która w wielu specyficznych przypadkach może być bardziej pomocna, nie rości sobie jednak prawa do całkowitego zastąpienia klas.