Với một yếu tố giống như một div
trong trang, và tôi thêm một số đối tượng để nó như thế này:Có cần phải làm sạch các đối tượng bị ràng buộc khi loại bỏ một yếu tố
div.data=data;
Bây giờ, khi tôi cố gắng để loại bỏ các div
phần tử, là cần thiết để thiết lập dữ liệu của nó để null trước khi loại bỏ nó?
Cập nhật:
Trong thực tế, tôi lấy dữ liệu từ máy chủ, sau đó tôi sẽ liệt kê nó như thế này (trước khi danh sách, tôi sẽ loại bỏ các ememetns cũ:
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);
}
....
Phụ thuộc vào 'dữ liệu' là gì. Các trình duyệt cũ hơn, đặc biệt là IE, có vấn đề rò rỉ bộ nhớ nếu dữ liệu chứa tham chiếu vòng tròn đến div (bao gồm các biến đóng nếu bạn có chức năng!) – Bergi
Thời gian chạy JS nên sử dụng bộ thu gom rác trong những ngày này, vì vậy tôi sẽ nói không. Vấn đề có thể là một cách khác xung quanh - bất kỳ dữ liệu nào bạn đính kèm vào các phần tử DOM sẽ vẫn còn trong bộ nhớ nếu không bị xóa. – millimoose
@millimose: Thời gian chạy JS luôn sử dụng bộ thu gom rác ngay từ đầu (NS2.0). Vấn đề là các phiên bản cũ của IE đã sử dụng bộ thu gom đếm tham chiếu mà không thể xử lý các tham chiếu vòng tròn. – slebetman