Até aqui, você já trabalhou com estruturas como Object, Map e Set.
Agora vamos conhecer duas variações especiais:
WeakMapWeakSet
Elas existem para resolver problemas específicos de memória e ciclo de vida.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que são referências fracas
- Diferenciar
MapdeWeakMap - Diferenciar
SetdeWeakSet - Evitar vazamentos de memória
- Reconhecer cenários reais de uso
Relembrando: referências em JavaScript
Objetos em JavaScript são armazenados por referência.
Enquanto existir uma referência a um objeto, ele:
- não é removido da memória
- não pode ser coletado pelo Garbage Collector
Isso é importante — e perigoso se mal usado.
O problema com Map e Set
Veja este exemplo:
const map = new Map();
let usuario = { nome: "Daniel" };
map.set(usuario, "dados privados");
usuario = null;
Mesmo após usuario = null:
- o objeto continua existindo
- porque o
Mapmantém a referência
O que é um WeakMap?
WeakMap é uma estrutura onde:
- as chaves são objetos
- as referências às chaves são fracas
Isso significa:
se não houver outra referência ao objeto, ele pode ser removido da memória.
Exemplo com WeakMap
const weakMap = new WeakMap();
let usuario = { nome: "Daniel" };
weakMap.set(usuario, "dados privados");
usuario = null;
Agora:
- quando o objeto não for mais usado
- ele pode ser coletado automaticamente
Limitações do WeakMap
Justamente por lidar com memória, o WeakMap tem restrições:
- não é iterável
- não possui
size - chaves só podem ser objetos
Caso real — dados privados por objeto
const dadosPrivados = new WeakMap();
class Usuario {
constructor(nome) {
dadosPrivados.set(this, { nome });
}
getNome()
{
return dadosPrivados.get(this).nome;
}
}
const u = new Usuario("Daniel");
console.log(u.getNome()); // Saída será: Daniel
Aqui:
- os dados não ficam expostos
- não há vazamento de memória
O que é um WeakSet?
WeakSet é semelhante ao Set, mas:
- armazena apenas objetos
- mantém referências fracas
Ele é usado quando você só precisa saber:
“esse objeto já passou por aqui?”
Exemplo com WeakSet
const visitados = new WeakSet();
let elemento = document.createElement("div");
visitados.add(elemento);
console.log(visitados.has(elemento)); // Saída será: true
elemento = null;
Quando o elemento some:
- o
WeakSetnão impede a coleta
Quando usar WeakMap?
- dados privados associados a objetos
- metadados
- caches temporários
Quando usar WeakSet?
- marcar objetos processados
- evitar duplicação de processamento
- controle de ciclo de vida
Quando NÃO usar
Não use WeakMap ou WeakSet quando:
- você precisa iterar
- precisa saber o tamanho
- precisa persistir dados
Resumo da aula para nunca mais esquecer
WeakMapusa referências fracas- Evita vazamento de memória
- Não é iterável
WeakSetmarca objetos sem impedir coleta- Use apenas quando fizer sentido
Na próxima aula, vamos fechar esse bloco com Intl avançado, lidando com datas, números e internacionalização corretamente.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Ábaco
O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.
Final Fantasy
O famoso título Final Fantasy, da Square Enix, tem este nome exatamente porque se tratava da última esperança da empresa, que estava à beira da falência quando o lançou. Clique aqui e conheça detalhes dessa história.
Inteligência artificial
O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Playstation
O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.










