![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 23.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam taki kod:
Zaraz na początku "this.data.node_data" to zwykły obiekt {} dwuwymiarowy, gdzie "kluczami" są nazwy zmiennych lub funkcji, a wartościami null w przypadku zmiennych lub funkcjami w przypadku metod. "this.node" to przyszła instancja klasy reprezentująca liść w drzewie i do prototypu tej klasy przypisujemy rzeczy z this.data.node_data. Teraz miejsce gdzie jest "result = value.apply... i tam extend. Jest tworzona dynamicznie metoda "_callback" a dynamicznie dlatego, żeby nie wpisywać w normalnych metodach klasy "this.node" jakiego triggera ma uruchomić - "before.node.btree" lub np. "load.node.btree" czy nie przekazywać znowu ręcznie parametrów do triggera itp. To wszystko działa jak należy ALE. Jak wywołam metodę ta rozszerzona, która zawiera _callback() i w niej gdzieś pod drodze wewnątrz klasy "this.node" znowu wywołam taka rozszerzona metodę to nie wszystkie dodane funkcje "_callback" (i co za tym idzie triggery) się uruchamiają. A uruchamiają się tylko te ostatnie. Ten opisany problem znika, kiedy w value.apply zrobię kopie "this" czyli instancji klasy "this.node" tylko ze wtedy właśnie na kopii są wykonywane wewnętrzne jakieś operacje i nic nie działa tak jak należy. Odkryłem, ze jeśli działa na kopii to wtedy ta dodana funkcja "_callback" nie jest tak jakby nadpisywana - dokładnego mechanizmu nie potrafię ogarnać. Jest na to jakiś sposób aby zachować taką funkcjonalność (rozszerzanie funkcji) i jednocześnie sprawić żeby działało także w w/w przypadku? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:45 |