SORU
12 NİSAN 2009, Pazar


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
12 NİSAN 2009, Pazar


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Gali B

    Gali B

    1 EYLÜL 2006
  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007