Até aqui, você já trabalhou com estruturas como Object, Map e Set.

Agora vamos conhecer duas variações especiais:

  • WeakMap
  • WeakSet

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 Map de WeakMap
  • Diferenciar Set de WeakSet
  • 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 Map mantém a referência
Isso pode causar vazamento de memória.

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
Você não controla quando o Garbage Collector roda — e nem precisa.

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
Essas limitações são intencionais.

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 WeakSet nã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
Eles são ferramentas específicas — não substitutos de Map e Set.

Resumo da aula para nunca mais esquecer

  • WeakMap usa referências fracas
  • Evita vazamento de memória
  • Não é iterável
  • WeakSet marca 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.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.


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.


A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.


Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.