WeakRef

JavaScript 🔴 Senior

Definition

Reference faible vers un objet qui n'empeche pas sa garbage collection. Acces via .deref() qui retourne l'objet ou undefined s'il a ete GC.

Analogie

Prendre une photo d'un objet au lieu de le garder : tu peux regarder la photo, mais l'objet peut avoir ete jete entre-temps.

Exemple de code

let obj = { data: 'important' };
const ref = new WeakRef(obj);
obj = null; // eligible au GC
// Plus tard
const derefed = ref.deref();
if (derefed) console.log(derefed.data);
else console.log('GC collected');

Cas d'usage

Caches non-bloquants, observateurs legers, references optionnelles a des objets DOM.

Anti-pattern

Utiliser WeakRef pour la logique metier critique : le timing du GC est non-deterministe.
#core#avance#ES2021