🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #50481

Re: Podłączanie się pod zdarzenia i konieczność odpinania? Wycieki pamięci?

#50481
From: Peter May
Date: Fri, 07 Jan 2011 09:59
58 lines
3014 bytes
W dniu 2011-01-07 01:29, 3P pisze:
> Dnia 07-01-2011 o 01:06:23 Peter May <peter.may@onet.pl> napisał(a):
>
>> W dniu 2011-01-06 22:41, 3P pisze:
>>> Hej.
>>>
>>> Jestem lama jeżeli chodzi o JS. Powiedzcie mi proszę, czy jeżeli podepnę
>>> się pod event elementu,
>>> to czy muszę się kiedyś od niego odpiąć, aby nie wywoływać wycieków
>>> pamięci?
>>>
>>> (jQuery znam lepiej niż czysty JS)
>>> $("#button").click(function() { alert("click"); };
>>>
>>> w czystym JS to chyba mniej więcej
>>> var button = document.getElementById("button");
>>> button.onclick = function() { alert("click") };
>>> Czy powyższe spowoduje wyciek pamięci?
>>
>> Tak. W IE6,7. Jeśli chcesz uniknąć wycieków pamięci w IE6 i 7 (nie
>> wiem, czy poprawili to w IE8 i chyba nie warto już sobie zawracać
>> głowy IE6), to lepiej nie podpinać anonimowych funkcji do zdarzeń.
>> Zamiast tego zrób tak:
> Wierz lub nie, ale muszę pisać pod IE6. Pod FF nawet nie da się otworzyć
> tej aplikacji.

To współczuję :-(

>> button.onclick = mojafunkcja;
>>
>> var mojafunkcja = function()
>> {
>> alert("test");
>> }
>>
> A czy jeżeli w powyższej mofafunkcja będę modyfikował elementy DOM to
> nie będzie problemu?

Nie będzie problemu. Staraj się "kasować z pamięci" nieużywane już 
obiekty, np.:

var elms = document.getElementsByTagName("*");
[...]

elms = null;

> Myślałem, że problemem może być nie samo podpięcie anonimowej funkcji,
> ale to co się tam dzieje.
>
> Dziwne bo przenigdy nie widziałem na stronach/książkach o jQuery
> przykładów, gdzie musieli
> odpinać się od eventu ze względu na wycieki pamięci.

Wbrew temu, co się sądzi, frameworki nie o wszystko zadbają za nas. Nie 
są samym w sobie złem, ale nie można też im bezgranicznie ufać ;-)

-- 
Peter
Technical Details
Message-ID: <ig6o7b$dv4$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!opal.futuro.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!news.onet.pl!.POSTED!not-for-mail
References: <op.vowo7euaqh41p4@mcs.atena.pl> <ig5lek$9o6$1@news.onet.pl> <op.vowwzflcqh41p4@mcs.atena.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!opal.futuro.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!news.onet.pl!.POSTED!not-for-mail
From: Peter May <peter.may@onet.pl>
Newsgroups: pl.comp.lang.javascript
Subject: Re: Podłączanie się pod zdarzenia i
 konieczność odpinania? Wycieki
 pamięci?
Date: Fri, 07 Jan 2011 10:59:49 +0100
Organization: http://onet.pl
Lines: 58
Message-ID: <ig6o7b$dv4$1@news.onet.pl>
References: <op.vowo7euaqh41p4@mcs.atena.pl> <ig5lek$9o6$1@news.onet.pl> <op.vowwzflcqh41p4@mcs.atena.pl>
NNTP-Posting-Host: 188.147.212.216.nat.umts.dynamic.eranet.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1294394414 14308 188.147.212.216 (7 Jan 2011 10:00:14 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Fri, 7 Jan 2011 10:00:14 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.13) Gecko/20101207 Lightning/1.0b2 Thunderbird/3.1.7
In-Reply-To: <op.vowwzflcqh41p4@mcs.atena.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit