ExpertiDict

JavaScript · Avançado · Inglês · Técnico

WeakRef

/wik ɹɛf/substantivo

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 coletado

Exemplos

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

Veja também

Todos os termos de JavaScript