2013-06-04 21 views
5

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

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

+0

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

+0

@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

Trả lời

-1

Không Khi bạn xóa div không có phần tử nào có quyền truy cập vào div.data.Vì vậy, bộ nhớ không bị nhiễu của nó và công việc của bộ thu gom rác để xóa nó đi. thời gian xác định trước. Ngoài ra, hành động thu gom rác thải cần có thời gian.

+0

Việc xóa tham chiếu vẫn không khởi động bộ thu gom rác. Sau đó, 'dữ liệu' sẽ không chỉ là không thể tiếp cận, nhưng không thể truy cập hai lần. – Bergi

+0

@Bergi bạn nói đúng: http://perfectionkills.com/understanding-delete/ – basarat

Các vấn đề liên quan