Wojciech Mazurek

Wojciech Mazurek właściciel, PPHU
Neuron

Temat: destrukcja - czyli jak zniszczyć obiekt

witam
mam obiekt stworzony konstruktorem new
w obiekcie jest inicjacja pluginu wykresu, stworzenie elementu DOM, synchronizacja z serwerem
oparta na eventach i kilka drobiazgów ....

Wszystko gra i buczy...

Zachciało mi się zrobić okienko pseudo - modalne - stworzyć obiekt a po "zamknięciu" okna zniszczyć obiekt.
Zrobiłem jak każą w podręcznikach

mychart.myDestroy // metoda niszczy element dom przez deatch()
mychart=null
delete mychart

i dupa.
Obiekt dalej pyta serwer o dane choć go już nie ma ;(

Uzupełniłem metodę myDestroy o wyrejestrowanie eventów i już nie pyta serwera
ale jako człeka przyzwyczajonego do obiektów tworzonych z klas szlak mnie trafia bo nie wiem co się dzieje z kodem
który został (nie)stworzony.
Literatura dużo mówi o tworzeniu obiektów, np z prototypów i kompletnie nic o ich niszczeniu.

Może jestem po prostu nadwrażliwy i tak ma być i po wyrejestrowaniu eventów i timerów należy resztę olać
a silnik js sam się tym zajmie ?

konto usunięte

Temat: destrukcja - czyli jak zniszczyć obiekt

Musimy mieć coś więcej. Ale generalnie masz ten sam kłopot co większość - usunąłeś obiekt ale zapomniałeś odpiąć eventy które subskrybował. Jeżeli callback jest samodzielny to appka nie zgłosi błędu tylko będzie dalej funkcjonować.
Wojciech Mazurek

Wojciech Mazurek właściciel, PPHU
Neuron

Temat: destrukcja - czyli jak zniszczyć obiekt

Dariusz P.:
Musimy mieć coś więcej. Ale generalnie masz ten sam kłopot co większość - usunąłeś obiekt ale zapomniałeś odpiąć eventy które subskrybował. Jeżeli callback jest samodzielny to appka nie zgłosi błędu tylko będzie dalej funkcjonować.

No i właśnie tu jest pies pogrzebany - albo ten sęk ;)
Ja odpinałem eventy i timery ale oczywiście poeksperymentowałem sobie bo się tego całego bajzlu uczę.
czllback nie jest samodzielny - to funkcja która opakowuje metodę a metoda woła inną metodę która to metoda zasysa dane ajaxem i ładuje do tablic-pól obiektu.

Wychodzi na to że pomimo wielu różnych prób np objekt=function() i podobnych
cały czas niszczę wskaźnik do obiektu bo calback działa, ajax działa tablice są.

I to mnie dziwi - domyślam się że calback może być samodzielnym bytem co zresztą widać po zakresie zmiennych.
Ale powinien on generować błędy.
Zresztą generuje - ale dopiero gdy jedna z metod obiektu próbuje się dobrać do nieistniejącego już
elementu DOM który zniszczyłem metodą deatch()

Za chwilę będę budował konstrukcję opartą na masowym tworzeniu i zwalnianiu obiektów.
Skonstruuję destruktor który "poodpina" wszystko co jest poza obiektem.
Ale czy silnik przeglądarki poradzi sobie z tworzeniem i niszczeniem setek obiektów na sekundę?

Obserwuję menadzerem zadań zużycie pamięci niektórych stron - google analist - strona której autorów raczej trudno posądzić o brak kompetencji potrafi czasami w jeden dzień "wyssać" 2G ;(

Następna dyskusja:

jak zapobiec przeskakiwaniu...




Wyślij zaproszenie do