WeakMap e WeakSet — privacy e cache semplici
Impari gli elementi essenziali di WeakMap/WeakSet: chiavi costituite solo da oggetti, assenza di size e iterazione, helper per la privacy e piccole cache che si ripuliscono automaticamente.
WeakMap e WeakSet — privacy e cache semplici è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 3 lezioni in totale.
Perché usare le collezioni Weak?
Obiettivo: aggiungere metadati agli oggetti senza impedire la garbage collection.
- WeakMap: oggetto → valore
- WeakSet: appartenenza degli oggetti
- Nessuna size e nessuna iterazione
- Ideali per privacy e cache

Elementi essenziali di WeakMap
WeakMap accetta solo oggetti come chiavi; supporta set/get/has/delete, ma non l'iterazione né size.
// 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

Elementi essenziali di WeakSet
WeakSet contiene oggetti; non ammette duplicati e non supporta l'iterazione né la proprietà size.
// 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

Privacy tramite WeakMap
Utilizzi una WeakMap per associare dati nascosti agli oggetti dell'API; quando gli oggetti dell'API non esistono più, i dati possono essere recuperati dalla garbage collection.
// 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)

Cache per oggetto
Crei una cache per oggetto; le relative voci scompaiono quando l'oggetto chiave non è più referenziato.
// 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

Limiti e quando non usarle
Ricordi:
- Né WeakMap né WeakSet supportano l'iterazione o size.
- Le chiavi devono essere oggetti.
- Utilizzi Map/Set se deve elencare le chiavi o contare gli elementi.

Quiz su WeakMap e Map
Verifica rapida: caso d'uso di WeakMap.

Riepilogo
Riepilogo: utilizzi WeakMap per la privacy e le cache oggetto→valore; utilizzi WeakSet per verificare l'appartenenza di oggetti senza perdite. Ricordi: solo chiavi oggetto, nessuna iterazione o size.

Domande Frequenti
La lezione «WeakMap e WeakSet — privacy e cache semplici» è gratuita?
Sì — il testo completo di «WeakMap e WeakSet — privacy e cache semplici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 3 lezioni in totale.
Cosa imparerò in «WeakMap e WeakSet — privacy e cache semplici»?
Impari gli elementi essenziali di WeakMap/WeakSet: chiavi costituite solo da oggetti, assenza di size e iterazione, helper per la privacy e piccole cache che si ripuliscono automaticamente. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «WeakMap e WeakSet — privacy e cache semplici»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Elementi essenziali di Map e Set
- WeakMap e WeakSet — privacy e cache semplici
- Schemi di iterazione