Rumah >hujung hadapan web >tutorial js >Bagaimanakah Operator `delete` JavaScript Sebenarnya Berfungsi pada Objek?
Menyahmistikan Pemadaman Objek dalam JavaScript
Pengendali pemadam JavaScript membingungkan ramai pembangun, terutamanya mengenai kesan terhadnya pada objek. Bertentangan dengan jangkaan, pengendali padam hanya mengalih keluar rujukan kepada objek, meninggalkan objek sebenar tidak disentuh dalam ingatan.
Untuk menggambarkan konsep ini, pertimbangkan coretan kod berikut:
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
Selepas melaksanakan ini kod dalam Safari 4, obj pembolehubah menjadi batal, tetapi foo terus menunjuk ke objek yang sama seperti sebelum ini. Ini berlaku kerana operator pemadaman JavaScript hanya menyasarkan rujukan, bukan objek asas itu sendiri.
Rasional di sebalik tingkah laku ini terletak pada pengumpulan sampah. JavaScript menggunakan asas "kekal/lepaskan" untuk pengumpulan sampah, membayangkan bahawa objek dituntut semula hanya apabila tiada lagi rujukan yang menunjuk kepada mereka. Oleh itu, pemadaman obj hanya mengalih keluar rujukan tertentu itu, meninggalkan mana-mana rujukan lain tidak disentuh.
Oleh itu, objek kekal dalam ingatan kerana foo masih menunjuk kepadanya. Memadam obj hanya menghapuskan satu laluan untuk mengakses objek, bukan objek itu sendiri. Pada dasarnya, pengumpul sampah JavaScript mengendalikan pemadaman objek yang tidak digunakan, sekali gus menghapuskan keperluan untuk pemadaman manual.
Walau bagaimanapun, pemadaman rujukan boleh memberi manfaat kepada pengumpul sampah. Dengan mengalih keluar rujukan yang tidak digunakan, pengumpul boleh mengenal pasti objek yang sedia untuk ditambak dengan lebih baik. Objek besar dengan rujukan berlarutan mungkin masih tidak jelas, memberi kesan kepada penggunaan memori walaupun ia tidak lagi diperlukan oleh program. Akibatnya, pemadaman rujukan boleh membantu pengumpul sampah dalam mengoptimumkan pengurusan memori.
Atas ialah kandungan terperinci Bagaimanakah Operator `delete` JavaScript Sebenarnya Berfungsi pada Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!