JavaScript'in deleteoperatörü ile biraz kafam karıştı . Aşağıdaki kod parçasını alın:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Bu kod parçası yürütüldükten sonra, objolduğu nullancak fooyine de tam gibi bir nesne anlamına gelmektedir obj. Bu nesnenin fooişaret ettiği aynı nesne olduğunu tahmin ediyorum .
Bu beni şaşırttı, çünkü yazmanın sadece değişkeni değil, bellekte işaret eden delete objnesneyi objsilmesini bekliyordum obj.
Bunun nedeni JavaScript'in Çöp Toplayıcısının tutma / bırakma esasına göre çalışmasıdır, böylece nesneyi gösteren başka değişkenler olmasaydı bellekten kaldırılır mı?
(Bu arada, testlerim Safari 4'te yapıldı.)
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;çek nesne silinmez obj: Silme kullanım delete obj.helloTextve daha sonra kontrolfoo now foo is an empty object
delete. Javascript nesneleri silmek için değil delete. Senin durumunda bir nesne anahtarı kaldırmak için kullanılır var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;. Denetlemek, nesne silinmez obj. Çalıştırın Sonraki delete obj.helloTextve bunu görebilirsiniz fooboş artık puan "" "