0Pricing
JavaScript Academy · Leçon

WeakMap et WeakSet — confidentialité et caches simples

Découvrez les notions essentielles de WeakMap et WeakSet : clés limitées aux objets, absence de taille et d’itération, outils de confidentialité et petits caches nettoyés automatiquement

WeakMap et WeakSet — confidentialité et caches simples est une leçon JavaScript Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage JavaScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours JavaScript Academy comprend 3 leçons au total.

Pourquoi les collections faibles ?

Objectif : Ajouter des métadonnées aux objets sans empêcher le ramasse-miettes de libérer leur mémoire.

  • WeakMap : objet → valeur
  • WeakSet : appartenance d’un objet
  • Pas de taille ni de parcours
  • Idéal pour la confidentialité et les caches
WeakMap et WeakSet — confidentialité et caches simples — illustration 1

Notions essentielles de WeakMap

WeakMap n’accepte que des clés objets ; il prend en charge set, get, has et delete, sans parcours ni propriété de taille.

// 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 et WeakSet — confidentialité et caches simples — illustration 2

Notions essentielles de WeakSet

WeakSet contient des objets ; il n’accepte pas les doublons et ne permet ni le parcours ni l’accès à une propriété de taille.

// 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 et WeakSet — confidentialité et caches simples — illustration 3

Confidentialité avec WeakMap

Utilisez un WeakMap pour associer des données masquées à des objets d’interface de programmation ; lorsque ces objets disparaissent, les données peuvent être récupérées par le ramasse-miettes.

// 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 et WeakSet — confidentialité et caches simples — illustration 4

Cache par objet

Créez un cache par objet ; les entrées disparaissent lorsque l’objet clé n’est plus référencé.

// 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 et WeakSet — confidentialité et caches simples — illustration 5

Limites et cas où éviter ces collections

À retenir :

  • WeakMap et WeakSet ne permettent ni le parcours ni l’accès à la taille.
  • Les clés doivent être des objets.
  • Utilisez une collection clé-valeur ou un ensemble si vous devez énumérer les clés ou compter les éléments.
WeakMap et WeakSet — confidentialité et caches simples — illustration 6

Quiz sur WeakMap et les collections clé-valeur

Vérification rapide : cas d’utilisation de WeakMap.

WeakMap et WeakSet — confidentialité et caches simples — illustration 7

Récapitulatif

Récapitulatif : Utilisez WeakMap pour associer des valeurs à des objets de manière privée et pour les caches ; utilisez WeakSet pour suivre l’appartenance d’objets sans fuites. À retenir : uniquement des clés objets, sans parcours ni taille.

WeakMap et WeakSet — confidentialité et caches simples — illustration 8

Questions Fréquemment Posées

La leçon « WeakMap et WeakSet — confidentialité et caches simples » est-elle gratuite ?

Oui — le texte complet de « WeakMap et WeakSet — confidentialité et caches simples » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours JavaScript Academy, passe à CoddyKit PRO. Le cours JavaScript Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « WeakMap et WeakSet — confidentialité et caches simples » ?

Découvrez les notions essentielles de WeakMap et WeakSet : clés limitées aux objets, absence de taille et d’itération, outils de confidentialité et petits caches nettoyés automatiquement Tu pratiques JavaScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer JavaScript Academy ?

Aucune expérience préalable n'est requise. JavaScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 3.

Combien de temps prend la leçon « WeakMap et WeakSet — confidentialité et caches simples » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon JavaScript Academy ?

Oui. Chaque leçon JavaScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Notions essentielles de Map et Set
  2. WeakMap et WeakSet — confidentialité et caches simples
  3. Modèles d’itération
← Retour à JavaScript Academy