JavaScript Nesne silme
Biraz JavaScript 1 ** operatörü ile kafam karıştı. Kod: aşağıdaki parça alın
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Kod sonra bu parça, obj
* *4, foo
hala tam olarak obj
gibi bir nesne anlamına gelir. çalıştırıldı. Bu nesne foo
işaret aynı nesne olduğunu tahmin ediyorum.
Bu delete obj
yazma obj
bellek—değişken obj
sadece işaret eden bir nesne silinmiş bunu bekliyordum çünkü beni karıştırıyor.
JavaScript Çöp Toplayıcısı eğer başka bir değişken nesne, işaret yoktu eğer o korur/serbest olarak çalışıyor, çünkü bubellekten kaldırılır?
(Bu arada benim test 4. Safari yaptım)
CEVAP
Delete operatörü yalnızca bir başvuru, hiç bir nesne kendisini siler. Eğer nesnenin kendisi sil öyle olsaydı, diğer kalan başvurular, C silmek gibi sarkan olurdu. (Ve onlardan biri çökmesine neden olacak erişiyor. Hepsini boş dönüş yapmak için her biri için silme veya ekstra bellek nesnesi ekstra iş anlamına gelirdi.)
Javascript çöp toplanmadığı için, nesnelerin kendilerini silmek gerek yok onlara artık başvurmak için bir yol yoktur hiçbir zaman kaldırılır.
Bu çöp toplayıcı iadesi mümkün ne hakkında daha fazla bilgi verir, çünkü eğer onları bitirdiyseniz bir nesne için başvurular silmek için yararlı olabilir. Başvurular, büyük bir nesne kalırsa, bu programın geri kalanı aslında o nesne kullanmayan varsa bile o sinsi, vahşi olmasına neden olabilir.
Eğer anahtar kontrol JavaScript bir ne...
JQuery ile JavaScript nesne için form ...
JavaScript döngü nesne...
Nasıl verimli bir şekilde anahtarları/...
Nasıl bir nesne JavaScript özelliği ol...