2013-06-04 14 views
5

çıkardığınızda ihtiyacınız bağlı nesneyi temizlemeye mı ve böyle kendisine bazı nesne ekleyin:sayfasında bir <code>div</code> gibi bir element Verilen bir öğe

div.data=data; 

Şimdi, kaldırmaya çalıştığınızda div öğesi, kaldırılmadan önce verilerini null olarak ayarlamak gerekli midir?


Güncelleme:

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); 
} 
.... 
+0

Verilerin ne olduğuna bağlı. Eski tarayıcılar, özellikle de IE, veriler div (eğer fonksiyonlarınız varsa kapatma değişkenlerini içerir!) Için döngüsel referanslar içeriyorsa bellek sızıntısı problemleri yaşadı! – Bergi

+0

JS runtime bu günlerde bir çöp toplayıcı kullanmalı, bu yüzden hayır diyeyim. Sorunun başka bir yoldan olması muhtemeldir - DOM öğelerine eklediğiniz veriler kaldırılmamışsa bellekte kalır. – millimoose

+0

@millimose: JS çalışma zamanı her zaman başlangıçtan beri bir çöp toplayıcı kullandı (NS2.0). Sorun, IE'nin eski sürümleri, dairesel referansları işleyemeyen bir referans sayıcı çöp toplayıcısı kullanmıştır. – slebetman

cevap

-1

No:

Aslında, o zaman ben (listede önce, eski ememetns kaldıracaktır bunu böyle listeler, sunucudan veri getirme Div'i sildiğinizde, div.data'ya erişimi olan hiçbir eleman yoktur.Bu yüzden onun hafızası ve çöp toplayıcısının işi temizlemesini sağlar. ndeterminist zaman. Ayrıca çöp toplama eylemi de zaman alır.

+0

Referansı silme hala çöp toplayıcısını başlatmıyor. Sonra 'data' sadece erişilemez değil, iki kez erişilemez. – Bergi

+0

@Bergi haklısınız: http://perfectionkills.com/understanding-delete/ – basarat

İlgili konular