Pisząc jeden z projektów, naszła mnie w pewnej chwili myśl, czy tak jak zrobiłem jest dobrze i czy może tak być. Otóż potrzebowałem zrobić listenery na poszczególne kolumny tabeli stworzonej w html. Na początku kombinowałem inaczej, próbowałem te listenery dodawać do metod odpowiedzialnych za to co dzieje się przy klikaniu w przycisk, ale to mi się "dublowało" (za każdym kliknięciem w przycisk wywoływało się n + ilosc_klikniec razy). W końcu uznałem, że stworzę takie coś:
constructor() {
for (let i = 0; i < this.table.firstColumnLength; i++) {
this.table.firstColumn[i].addEventListener("click", this.x.bind(this, i));
this.table.secondColumn[i].addEventListener("click", this.x.bind(this, i));
}
}
Uprościłem trochę ten kod na rzecz wpisania go tutaj - nie ma potrzeby wstawiania całych 40 linijek z konstruktora kiedy pytanie dotyczy raptem trzech. W konstruktorze oczywiście mam deklaracje innych zmiennych, pobieranie elementów oraz tworzenie instancji klas.
I gdy stworzyłem już taki zapis w konstruktorze zacząłem się zastanawiać - czy ja nie podważam jakichś zasad OOP? Czy w ogóle jest coś takiego?
Więc moje pytanie brzmi - czy taki zapis w konstruktorze, czyli pętla for a w niej takie odwołanie i stworzenie listenerów - jest błędem, czy nie? Czy tak wolno/można pisać, czy trzeba to rozbić jakoś inaczej?
Podejrzewam, iż jest to raczej błahy problem, jednak lekka niepewność w mojej głowie zaistniała i po prostu chciałbym ją rozwiać.