WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler
WeakMap/WeakSet temellerini öğrenin: yalnızca nesne anahtarları, boyut/yineleme olmaması, gizlilik yardımcıları ve kendiliğinden temizlenen küçük önbellekler.
WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.
Zayıf koleksiyonlar neden?
Amaç: Çöp toplamayı engellemeden nesnelere üstveri eklemek.
- WeakMap: nesne → değer
- WeakSet: nesne üyeliği
- Boyut yok, yineleme yok
- Gizlilik ve önbellekler için ideal

WeakMap'in temelleri
WeakMap yalnızca nesne anahtarlarını kabul eder; set/get/has/delete işlemlerini destekler; yineleme veya boyut özelliği yoktur.
// WeakMap: keys must be objects
const wm = new WeakMap();
const user = { name: "Ayla" };
wm.set(user, { visits: 1 });
console.log("has user?", wm.has(user));
console.log("get meta:", wm.get(user));
// Note: no wm.size, no wm.keys() — not iterable

WeakSet'in temelleri
WeakSet nesneleri tutar; yinelenenler, yineleme ve boyut özelliği yoktur.
// WeakSet: store objects without duplicates
const ws = new WeakSet();
const obj1 = {};
const obj2 = {};
ws.add(obj1);
ws.add(obj2);
ws.add(obj1); // duplicate ignored
console.log("has obj1?", ws.has(obj1));
// Note: no ws.size and no iteration

WeakMap ile gizlilik
API nesnelerine gizli veriler eklemek için WeakMap kullanın; API nesneleri ortadan kalktığında veriler toplanabilir.
// Privacy helper: store private data outside the object
const _priv = new WeakMap();
function makeCounter() {
const api = {};
_priv.set(api, { value: 0 });
api.inc = function () {
const box = _priv.get(api);
box.value = box.value + 1;
console.log("value", box.value);
};
// No public field exposes value directly
return api;
}
const c = makeCounter();
c.inc();
c.inc();
// console.log(c.value) -> undefined (nothing public)

Nesne başına önbellek
Nesne başına bir cache oluşturun; anahtar nesnesine artık başvurulmadığında girdiler ortadan kalkar.
// Cache computed data per object without leaks
const cache = new WeakMap();
function computeLength(doc) {
// Return cached result if present
if (cache.has(doc)) {
return cache.get(doc);
}
// Fake "expensive" compute
const result = (doc.text || "").length;
cache.set(doc, result);
return result;
}
const d1 = { text: "hello" };
const d2 = { text: "world!" };
console.log("len d1:", computeLength(d1));
console.log("len d1 cached:", computeLength(d1));
console.log("len d2:", computeLength(d2));
// If d1/d2 become unreachable, their cache entries can disappear automatically

Sınırlamalar ve ne zaman kullanılmamalı
Unutmayın:
- WeakMap/WeakSet üzerinde yineleme veya boyut yoktur.
- Anahtarlar nesne olmalıdır.
- Anahtarları listelemeniz veya öğeleri saymanız gerekiyorsa eşleme/küme kullanın.

WeakMap ve eşleme testi
Hızlı kontrol: WeakMap kullanım alanı.

Özet
Özet: Nesne→değer gizliliği ve önbellekler için WeakMap, sızıntı oluşturmadan nesne üyeliği için WeakSet kullanın. Unutmayın: Yalnızca nesne anahtarları vardır; yineleme veya boyut yoktur.

Sıkça Sorulan Sorular
“WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler” dersi ücretsiz mi?
Evet — “WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.
“WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler” dersinde ne öğreneceğim?
WeakMap/WeakSet temellerini öğrenin: yalnızca nesne anahtarları, boyut/yineleme olmaması, gizlilik yardımcıları ve kendiliğinden temizlenen küçük önbellekler. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Map ve Set temelleri
- WeakMap ve WeakSet — Basit Gizlilik ve Önbellekler
- Yineleme Kalıpları