JavaScript · Avançado · Inglês · Técnico
WeakRef
Objeto que guarda uma referência fraca a outro, sem impedir a coleta do alvo. Seu deref() devolve o alvo se ainda existir, ou undefined se ele foi coletado.
Onde usar
Usado em caches de objetos pesados que podem ser recriados. Em code review, é sinal de código avançado, e a recomendação é evitar, pois o momento da coleta é imprevisível.
Em código
let grande = { dados: new Array(1e6) };
const ref = new WeakRef(grande);
console.log(ref.deref()?.dados.length);
// 1000000
grande = null; // agora pode ser coletadoExemplos
The cache holds a WeakRef, so the GC can free the image.
O cache guarda um WeakRef, então o GC pode liberar a imagem.
Always check if deref returned undefined.
Sempre verifique se o deref devolveu undefined.
Cuidado
Basear a lógica do programa em o alvo ter ou não sido coletado.
Sinônimos
referência fraca