WeakMap ve WeakSet
WeakMap ve WeakSet'in çöp toplayıcı ile nasıl çalıştığını öğrenirsin.
WeakMap nedir?
WeakMap, anahtarları yalnızca nesne olabilen bir Map türüdür. Tutulan referans zayıftır: başka hiçbir yerde kullanılmayan bir nesne çöp toplayıcı tarafından temizlenir ve WeakMap'ten otomatik olarak düşer.
Bu özellik, bir nesneye ek bilgi eklemek istediğinde ama o nesne yok olunca verinin de yok olmasını istediğinde kullanışlıdır. WeakMap'in size özelliği ya da keys()/values() metotları yoktur; içerik listelenemez.
WeakSet ve kullanım
WeakSet, yalnızca nesneleri zayıf biçimde tutan bir Set türüdür. Bir nesne WeakSet'e add edilir; has ile varlığı, delete ile silinir. Yinelenen nesneler yoktur.
Tipik kullanım: bir nesnenin "işaretli" olduğunu izlemek. Örneğin bir DOM öğesinin zaten bir olay dinleyicisiyle kaydedilip kaydedilmediğini WeakSet ile takip edebilirsin; öğe kaldırılınca kayıt da otomatik temizlenir.
Uygulama WeakMap ile nesneye metadata ekle
meta adında bir WeakMap oluştur. btn adında bir nesne tanımla. meta.set(btn, ...) ile btn'e { seen: true } değerini ekle. meta.has(btn) sonucunu console.log ile yazdır.
Örnek çözümü göster
const meta = new WeakMap();
const btn = { name: "Ayşe" };
meta.set(btn, { seen: true });
console.log(meta.has(btn));
Kendini test et
-
WeakMap anahtarları için hangisi geçerlidir?
- Yalnızca dize anahtarlar
- Sayı, dize ve nesne anahtarlar
- Yalnızca nesne anahtarlar
- Herhangi bir tür
Cevabı göster
Yalnızca nesne anahtarlar — Doğru. WeakMap anahtarları yalnızca nesne olabilir.
-
WeakMap'e değer ekle
const meta = new WeakMap(); const btn = {}; meta.____(btn, { count: 0 }); console.log(meta.has(btn));Cevabı göster
const meta = new WeakMap(); const btn = {}; meta.set(btn, { count: 0 }); console.log(meta.has(btn)); -
WeakMap ve WeakSet özellikleri
- WeakMap anahtarı
- Yalnızca nesne olabilir
- WeakSet öğesi
- Yalnızca nesne kabul eder
- size özelliği
- Bulunmaz, listelenemez
- çöp toplayıcı
- Otomatik temizler
-
WeakMap ile ilgili hangisi doğrudur?
- içerik listelenemez, anahtarlar nesne olur
- size özelliği kaç giriş olduğunu verir
- keys() ile tüm anahtarları listeler
- içindeki girişler for...of ile gezilebilir
Cevabı göster
içerik listelenemez, anahtarlar nesne olur — Doğru. WeakMap iterable değildir; size veya keys() de yoktur.