Ce face WeakSet
WeakSet ține minte doar dacă un obiect a fost adăugat, fără să-l păstreze în memorie. Valorile trebuie să fie obiecte (sau simboluri nefolosite cu Symbol.for).
Ca la WeakMap, nu poate fi parcurs și nu are size. Are doar add, has și delete. Exemplu tipic: marcarea obiectelor deja procesate, fără să le ții în viață.
Parametri
| Parametru | Descriere |
|---|---|
valori |
Opțional, la creare: un iterabil de obiecte. |
Ce returnează
Un obiect WeakSet.
Exemple
Exemplul 1: Mesaje deja afișate
const afisate = new WeakSet();
const mesaje = [{ text: "Bun venit" }, { text: "Ai o comandă nouă" }];
function afiseaza(mesaj) {
if (afisate.has(mesaj)) return;
afisate.add(mesaj);
console.log(mesaj.text);
}
afiseaza(mesaje[0]);
afiseaza(mesaje[0]);
afiseaza(mesaje[1]);
console.log(afisate.delete(mesaje[1]), afisate.has(mesaje[1]));
Rezultat
Bun venit
Ai o comandă nouă
true false
Greșeli frecvente
- Încerci să afișezi conținutul unui WeakSet sau să-l parcurgi. Nu se poate; dacă ai nevoie de listă, folosește
Set.
Comenzi înrudite
WeakMap: Un Map cu chei obiecte, care nu împiedică ștergerea obiectelor din memorie.Set (add, has, delete): O colecție de valori unice: fiecare valoare apare o singură dată, în ordinea adăugării.WeakRef / FinalizationRegistry: Referințe slabe la obiecte și notificări când un obiect a fost eliberat din memorie.