588
Rozdział 13
Wielokrotnie stosowanie zachowań
Ja uważam, że każdy pies
powinien mieć swoją własną
metodę bark, ale to moje
zdanie.
Czy powielanie metod jest poważnym problemem?
Okazuje się, że jest. Ogólnie rzecz biorąc, nie chcemy, by w efekcie budowania
każdej nowej instancji obiektu przy użyciu konstruktora tworzony był nowy zestaw
metod. Powoduje to pogorszenie wydajności działania przeglądarki i niepotrzebnie
zużywa zasoby komputera, co może być bardzo poważnym problemem, zwłaszcza
na urządzeniach mobilnych. A jak się niebawem przekonasz, istnieją bardziej
elastyczne i użyteczne sposoby tworzenia obiektów w języku JavaScript.
Cofnijmy się zatem o krok i pomyślmy, co było jednym z podstawowych powodów,
dla których zaczęliśmy stosować konstruktory: chodziło o
wielokrotne korzystanie
z tych samych zachowań
. Pamiętasz zapewne, że mieliśmy kilka obiektów psów
i chcieliśmy, by korzystały one z tej samej metody
bark
. Po zastosowaniu
konstruktora udało się to zrobić na poziomie kodu, gdyż umieściliśmy metodę
bark
w jednym miejscu — wewnątrz konstruktora
Dog
. W ten sposób udało się
zastosować ten sam kod metody
bark
za każdym razem, kiedy tworzyliśmy nowy
obiekt. Jednak podczas wykonywania kodu nasze rozwiązanie nie wygląda już tak
dobrze, gdyż każdy obiekt psa otrzymuje własną kopię metody
bark
.
Powodem tego problemu jest fakt, że nie wykorzystujemy wszystkich możliwości,
jakie zapewnia model obiektowy języka JavaScript, który bazuje na
prototypach.
W tym modelu możemy tworzyć obiekty stanowiące rozszerzenie innych obiektów
— tzw. obiektów prototypów.
Aby zademonstrować prototypy… Gdybyśmy tylko mieli gdzieś pod ręką
prototyp psa…
Zazwyczaj, kiedy piszemy
o „zachowaniu” obiektu,
mamy na myśli zestaw
metod, które dany obiekt
udostępnia.
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.