0Pricing
JavaScript Academy · Aula

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
WeakMap e WeakSet — privacidade e caches simples — ilustração 1

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
WeakMap e WeakSet — privacidade e caches simples — ilustração 2

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
WeakMap e WeakSet — privacidade e caches simples — ilustração 3

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)
WeakMap e WeakSet — privacidade e caches simples — ilustração 4

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
WeakMap e WeakSet — privacidade e caches simples — ilustração 5

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.
WeakMap e WeakSet — privacidade e caches simples — ilustração 6

Questionário sobre WeakMap e Mapa

Verificação rápida: Caso de uso do WeakMap.

WeakMap e WeakSet — privacidade e caches simples — ilustração 7

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.

WeakMap e WeakSet — privacidade e caches simples — ilustração 8

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

  1. Fundamentos de Map e Set
  2. WeakMap e WeakSet — privacidade e caches simples
  3. Padrões de iteração
← Voltar para JavaScript Academy