JavaScript'in delete
operatö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, obj
olduğu null
ancak foo
yine de tam gibi bir nesne anlamına gelmektedir obj
. Bu nesnenin foo
iş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 obj
nesneyi obj
silmesini 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.helloText
ve 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.helloText
ve bunu görebilirsiniz foo
boş artık puan "" "