0Pricing
JavaScript Academy · Lección

WeakMap y WeakSet: privacidad y cachés sencillos

Aprenda los fundamentos de WeakMap/WeakSet: claves que solo pueden ser objetos, ausencia de size e iteración, utilidades de privacidad y pequeños cachés que se limpian automáticamente.

WeakMap y WeakSet: privacidad y cachés sencillos es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.

¿Por qué usar colecciones débiles?

Objetivo: añadir metadatos a objetos sin impedir la recolección de basura.

  • WeakMap: objeto → valor
  • WeakSet: pertenencia de objetos
  • Sin size ni iteración
  • Ideales para privacidad y cachés
WeakMap y WeakSet: privacidad y cachés sencillos — ilustración 1

Conceptos esenciales de WeakMap

WeakMap solo acepta objetos como claves; admite set/get/has/delete, pero no permite iteración ni size.

// 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 y WeakSet: privacidad y cachés sencillos — ilustración 2

Conceptos esenciales de WeakSet

WeakSet contiene objetos; no admite duplicados, iteración ni propiedad size.

// 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 y WeakSet: privacidad y cachés sencillos — ilustración 3

Privacidad mediante WeakMap

Use un WeakMap para asociar datos ocultos a objetos de API; cuando los objetos de API desaparezcan, los datos podrán recolectarse.

// 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 y WeakSet: privacidad y cachés sencillos — ilustración 4

Caché por objeto

Cree una caché por objeto; las entradas desaparecen cuando el objeto usado como clave deja de estar 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 y WeakSet: privacidad y cachés sencillos — ilustración 5

Límites y cuándo no usarlo

Recuerde:

  • WeakMap y WeakSet no permiten iteración ni size.
  • Las claves deben ser objetos.
  • Use Map/Set si necesita enumerar las claves o contar los elementos.
WeakMap y WeakSet: privacidad y cachés sencillos — ilustración 6

Cuestionario sobre WeakMap y Map

Comprobación rápida: caso de uso de WeakMap.

WeakMap y WeakSet: privacidad y cachés sencillos — ilustración 7

Repaso

Repaso: Use WeakMap para asociar objetos con valores de forma privada y crear cachés; use WeakSet para controlar la pertenencia de objetos sin fugas de memoria. Recuerde: solo admite objetos como claves, y no permite iteración ni size.

WeakMap y WeakSet: privacidad y cachés sencillos — ilustración 8

Preguntas frecuentes

¿La lección «WeakMap y WeakSet: privacidad y cachés sencillos» es gratis?

Sí — el texto completo de «WeakMap y WeakSet: privacidad y cachés sencillos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.

¿Qué aprenderé en «WeakMap y WeakSet: privacidad y cachés sencillos»?

Aprenda los fundamentos de WeakMap/WeakSet: claves que solo pueden ser objetos, ausencia de size e iteración, utilidades de privacidad y pequeños cachés que se limpian automáticamente. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.

¿Cuánto tiempo toma la lección «WeakMap y WeakSet: privacidad y cachés sencillos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de Map y Set
  2. WeakMap y WeakSet: privacidad y cachés sencillos
  3. Patrones de iteración
← Volver a JavaScript Academy