Pengalihan Keluar Elemen DOM dan Pengurusan Pendengar Acara
Dalam pembangunan web, soalan biasa timbul: "Jika elemen DOM (Model Objek Dokumen) dialih keluar daripada halaman, adakah pendengar acara yang dilampirkan turut dialih keluar daripada ingatan?"
Moden Pelayar
JavaScript Biasa:
Dalam penyemak imbas moden, apabila elemen DOM tanpa rujukan dialih keluar (iaitu, tiada rujukan yang menunjuk kepadanya), pengumpul sampah akan segera melupuskan kedua-dua elemen itu sendiri dan mana-mana pendengar acara yang berkaitan. Ini memastikan memori dibebaskan dengan cekap.
Contoh:
var a = document.createElement('div'); var b = document.createElement('p'); // Add event listeners to b... a.appendChild(b); a.removeChild(b); b = null; // No references to 'b' remain. // The element and its event listeners are now removed.
Walau bagaimanapun, jika elemen yang dialih keluar masih mengekalkan rujukan, kedua-dua elemen dan pendengarnya akan kekal dalam ingatan.
Contoh:
var a = document.createElement('div'); var b = document.createElement('p'); // Add event listeners to b... a.appendChild(b); a.removeChild(b); // Element removed but reference still exists. // The element and its event listeners remain.
jQuery:
Dalam jQuery, walaupun ia menggunakan kaedah removeChild() secara dalaman, ia juga menggunakan kaedah cleanData(). Kaedah ini secara automatik membersihkan data dan peristiwa yang terikat pada elemen apabila dialih keluar, tanpa mengira teknik pengalihan keluar (alih keluar(), kosong(), dsb.).
Pelayar Lama
Versi Legasi Internet Explorer:
Versi IE yang lebih lama terkenal dengan ingatan isu kebocoran yang berpunca daripada pendengar acara yang memegang rujukan kepada elemen induk mereka. Mengalih keluar pendengar secara manual dalam senario sedemikian adalah dinasihatkan untuk mengurangkan penggunaan memori.
Kesimpulan:
Dalam penyemak imbas moden, pengalihan keluar elemen DOM biasanya mengalih keluar pendengar acaranya daripada memori. Walau bagaimanapun, mengekalkan rujukan boleh menghalang pembersihan ini, yang membawa kepada potensi kebocoran memori dalam pelayar lama.
Atas ialah kandungan terperinci Adakah Elemen DOM yang Dialih Keluar Mengalih Keluar Pendengar Acara Mereka Secara Automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!