Saya agak bingung dengan delete
operator JavaScript . Ambil bagian kode berikut:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Setelah potongan kode ini dieksekusi, obj
adalah null
, tetapi foo
masih mengacu pada objek persis seperti obj
. Saya menduga objek ini adalah objek yang sama dengan yang foo
ditunjukkan.
Ini membingungkan saya, karena saya berharap tulisan itu delete obj
menghapus objek yang obj
menunjuk ke dalam memori — bukan hanya variabel obj
.
Apakah ini karena JavaScript's Garbage Collector bekerja dengan basis retain / release, sehingga jika saya tidak memiliki variabel lain yang menunjuk ke objek, itu akan dihapus dari memori?
(Omong-omong, pengujian saya dilakukan di Safari 4.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
tidak dihapus periksa obj
hapus penggunaan: delete obj.helloText
dan kemudian centangfoo now foo is an empty object
delete
bukan untuk menghapus objek dalam javascript. delete
Digunakan untuk menghapus kunci objek. Dalam kasus Anda var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;
, objek tidak dihapus. Centang obj
. Selanjutnya, jalankan delete obj.helloText
dan Anda dapat melihat bahwa foo
sekarang menunjuk ke kosong objek. "" "