Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

WeakMap în JavaScript

Un Map cu chei obiecte, care nu împiedică ștergerea obiectelor din memorie.

Sintaxă
const wm = new WeakMap();
wm.set(obiect, valoare)
wm.get(obiect)
wm.has(obiect)
wm.delete(obiect)

Ce face WeakMap

Într-un WeakMap, cheile trebuie să fie obiecte (sau simboluri nefolosite cu Symbol.for). Legătura cu cheia este „slabă”: dacă obiectul-cheie nu mai este folosit nicăieri altundeva, el și valoarea asociată pot fi eliberate automat din memorie.

Din acest motiv, un WeakMap nu poate fi parcurs și nu are size sau clear: are doar set, get, has și delete. Se folosește pentru date atașate unor obiecte pe care nu le controlezi (elemente DOM, obiecte primite din altă bibliotecă) și pentru cache.

Parametri

Parametru Descriere
perechi Opțional, la creare: perechi [obiect, valoare].

Ce returnează

Un obiect WeakMap.

Exemple

Exemplul 1: Date private atașate unor obiecte

const clicuri = new WeakMap();
const buton = { id: "trimite" };

clicuri.set(buton, 0);
clicuri.set(buton, clicuri.get(buton) + 1);
console.log(clicuri.get(buton), clicuri.has(buton));
console.log(clicuri.delete(buton), clicuri.has(buton));

Rezultat

1 true
true false

Exemplul 2: Cache pentru un calcul scump

const cache = new WeakMap();

function total(cos) {
  if (!cache.has(cos)) {
    console.log("calculez...");
    cache.set(cos, cos.reduce((s, p) => s + p.pret, 0));
  }
  return cache.get(cos);
}

const cos = [{ pret: 20 }, { pret: 35 }];
console.log(total(cos));
console.log(total(cos));

Rezultat

calculez...
55
55

Greșeli frecvente

  • Folosești un text ca cheie: wm.set("id", 1) aruncă TypeError: Invalid value used as weak map key.

Comenzi înrudite

  • Map (get, set, has, delete): O colecție de perechi cheie–valoare în care cheile pot fi de orice tip și ordinea este păstrată.
  • WeakSet: Un Set de obiecte care nu împiedică ștergerea lor din memorie; util pentru a „marca” obiecte.
  • WeakRef / FinalizationRegistry: Referințe slabe la obiecte și notificări când un obiect a fost eliberat din memorie.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: WeakMap

Ai o nelămurire despre utilizarea comenzii WeakMap sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.