Biorąc pod uwagę element jak div
na stronie i dodać jakiś obiekt do niego tak:Czy trzeba czyścić związany obiekt kiedy usunąć element
div.data=data;
Teraz, gdy próbuję usunąć div
element, czy konieczne jest ustawienie jego danych na wartość zerową przed usunięciem?
Aktualizacja:
W rzeczywistości, pobrać dane z serwera, a następnie będę lista to tak (przed listy, usunę stare ememetns:
var data=[{name:'xx'},{name:'yy'}...];
var resultDiv=document.getElementById("result");
resultDiv.innerHTML=""; //clear the old items
for(var i=0,len=data.length;i<len;i++){
var div=document.createElement("div");
div.data=data[i];
resultDiv.appendChild(div);
}
....
Zależy od tego, czym jest "dane". Starsze przeglądarki, zwłaszcza IE, miały problemy z wyciekiem pamięci, jeśli dane zawierały cykliczne odniesienia do elementu div (który zawiera zmienne zamykające, jeśli masz funkcje!). – Bergi
Środowisko wykonawcze JS powinno obecnie używać narzędzia do zbierania śmieci, więc powiedziałbym, że nie. Problem może być odwrotnie - wszelkie dane dołączone do elementów DOM pozostaną w pamięci, jeśli nie zostaną usunięte. – millimoose
@millimose: Środowisko wykonawcze JS od początku używało funkcji odśmiecania (NS2.0). Problem polega na tym, że starsze wersje IE używały licznika odwołań, które nie potrafiły obsłużyć odwołań cyklicznych. – slebetman