WeakMap e WeakSet — privacidade e caches simples
Aprenda os fundamentos de WeakMap/WeakSet: chaves que aceitam apenas objetos, ausência de tamanho e iteração, auxiliares de privacidade e pequenos caches que se limpam automaticamente
WeakMap e WeakSet — privacidade e caches simples é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.
Por que usar coleções fracas?
Objetivo: Adicionar metadados a objetos sem impedir a coleta de lixo.
- WeakMap: objeto → valor
- WeakSet: pertencimento de objetos
- Sem tamanho, sem iteração
- Ótimos para privacidade e caches

Noções essenciais de WeakMap
WeakMap aceita apenas chaves de objeto; oferece set/get/has/delete; não oferece iteração nem tamanho.
// WeakMap: keys must be objects
const wm = new WeakMap();
const user = { name: "Ayla" };
wm.set(user, { visits: 1 });
console.log("has user?", wm.has(user));
console.log("get meta:", wm.get(user));
// Note: no wm.size, no wm.keys() — not iterable

Noções essenciais de WeakSet
WeakSet armazena objetos; não permite duplicatas, iteração nem propriedade de tamanho.
// WeakSet: store objects without duplicates
const ws = new WeakSet();
const obj1 = {};
const obj2 = {};
ws.add(obj1);
ws.add(obj2);
ws.add(obj1); // duplicate ignored
console.log("has obj1?", ws.has(obj1));
// Note: no ws.size and no iteration

Privacidade com WeakMap
Use um WeakMap para anexar dados ocultos a objetos de API; quando os objetos de API desaparecem, os dados podem ser coletados.
// Privacy helper: store private data outside the object
const _priv = new WeakMap();
function makeCounter() {
const api = {};
_priv.set(api, { value: 0 });
api.inc = function () {
const box = _priv.get(api);
box.value = box.value + 1;
console.log("value", box.value);
};
// No public field exposes value directly
return api;
}
const c = makeCounter();
c.inc();
c.inc();
// console.log(c.value) -> undefined (nothing public)

Cache por objeto
Crie um cache por objeto; as entradas desaparecem quando o objeto usado como chave deixa de ser referenciado.
// Cache computed data per object without leaks
const cache = new WeakMap();
function computeLength(doc) {
// Return cached result if present
if (cache.has(doc)) {
return cache.get(doc);
}
// Fake "expensive" compute
const result = (doc.text || "").length;
cache.set(doc, result);
return result;
}
const d1 = { text: "hello" };
const d2 = { text: "world!" };
console.log("len d1:", computeLength(d1));
console.log("len d1 cached:", computeLength(d1));
console.log("len d2:", computeLength(d2));
// If d1/d2 become unreachable, their cache entries can disappear automatically

Limitações e quando não usar
Lembre-se:
- Não há iteração nem tamanho em WeakMap/WeakSet.
- As chaves devem ser objetos.
- Use Mapa/Conjunto se precisar listar as chaves ou contar itens.

Questionário sobre WeakMap e Mapa
Verificação rápida: Caso de uso do WeakMap.

Recapitulação
Recapitulação: Use WeakMap para privacidade e caches de objeto→valor; use WeakSet para o pertencimento de objetos sem vazamentos. Lembre-se: apenas chaves de objeto, sem iteração nem tamanho.

Perguntas Frequentes
A aula “WeakMap e WeakSet — privacidade e caches simples” é grátis?
Sim — o texto completo de “WeakMap e WeakSet — privacidade e caches simples” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.
O que vou aprender em “WeakMap e WeakSet — privacidade e caches simples”?
Aprenda os fundamentos de WeakMap/WeakSet: chaves que aceitam apenas objetos, ausência de tamanho e iteração, auxiliares de privacidade e pequenos caches que se limpam automaticamente Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “WeakMap e WeakSet — privacidade e caches simples”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos de Map e Set
- WeakMap e WeakSet — privacidade e caches simples
- Padrões de iteração