Do strony HTML pisze jeden spory skrypt JS (właściwie jedna duża klasa). Jakiś czas temu z rozpędu i w celach prototypowych umieściłam w konstruktorze wywołanie metody tej klasy, która to metoda wiesza obsługę zdarzeń na elementach DOM. Właściwie jakoś potem o tym zapomniałam, ale wczoraj czytałam kod w całości i zaczęłam się zastanawiać czy to poprawne. TZN w przykładach, jakie przy różnych okazjach przeglądałam, w konstruktorze raczej nadawano początkowe wartości zmiennym, ale nie wywoływano metod. Ponieważ ta akurat praca być może będzie oceniana, napiszcie proszę, czy to co zrobiłam, potraktowalibyście jako błąd.
W momencie wywołania konstruktora instancja obiektu istnieje już w pamięci - dlatego bez problemu możesz wywoływać z konstruktora inne metody czy przypisywać wartości do pól bez konieczności ręcznej alokacji pamięci.
Stąd tak: jest to bezpieczne, nie jest to żaden błąd / karygodna praktyka i bywa czasami przydatne (np. ja przy budowanie co bardziej złożonych komponentów jQuery wyrzucałem niektóre fragmenty konstruktora do odrębnych metod w stylu createEventListeners()
itd., ponieważ w ten sposób kod wychodził czytelniejszy).
Inną sprawą z kolei jest fakt, że jeśli masz bardzo złożony konstruktor, prawdopodobnie coś poszło nie tak i tak naprawdę powinnaś mieć prosty konstruktor do pary z odrębnym obiektem realizującym wzorzec fabryka
- wszystko jednak zależy od przypadku.
Nie jestem pewien co do konstruktora ale to jest nadużycie klasy - właściwie jedna duża klasa
Patryk27 napisał(a):
W momencie wywołania konstruktora instancja obiektu istnieje już w pamięci - dlatego bez problemu możesz wywoływać z konstruktora inne metody czy przypisywać wartości do pól bez konieczności ręcznej alokacji pamięci.
Stąd tak: jest to bezpieczne, nie jest to żaden błąd / karygodna praktyka i bywa czasami przydatne (np. ja przy budowanie co bardziej złożonych komponentów jQuery wyrzucałem niektóre fragmenty konstruktora do odrębnych metod w stylu
createEventListeners()
itd., ponieważ w ten sposób kod wychodził czytelniejszy).Inną sprawą z kolei jest fakt, że jeśli masz bardzo złożony konstruktor, prawdopodobnie coś poszło nie tak i tak naprawdę powinnaś mieć prosty konstruktor do pary z odrębnym obiektem realizującym wzorzec
fabryka
- wszystko jednak zależy od przypadku.
Dzięki, wzorców jeszcze nie przerabiałam, ale mnie uspokoiłes co do głównej wątpliwości
spartanPAGE napisał(a):
Nie jestem pewien co do konstruktora ale to jest nadużycie klasy -
właściwie jedna duża klasa
Tylko, widzisz, nie bardzo jest co z niej wyjąć na zewnątrz, nie ma w środku jakichś uniwersalnych fragmentów, wszystko jest celowane pod zastosowanie właśnie w niej