Il était une fois, dans le pays mystique de JavaScript, deux structures de données spéciales vivaient tranquillement dans l'ombre : WeakMap et WeakSet. Ils n’étaient pas aussi tape-à-l’œil que leurs cousins Map et Set, mais ils possédaient un pouvoir secret qui les rendait irremplaçables dans le domaine magique de la gestion de la mémoire.
Il y avait un vieux sorcier nommé Dev, qui travaillait souvent sur de grands projets magiques. Il avait un problème commun : chaque fois qu'il stockait des objets dans une carte ou un ensemble, ces objets restaient pour toujours, comme des invités qui ne voulaient pas quitter une fête. Même s'ils n'étaient plus nécessaires, ils persistaient, occupant un précieux souvenir dans le royaume.
Dev a pensé : « Et s'il existait un moyen de stocker des secrets temporairement, sans se soucier de nettoyer après moi ? »
Un jour, un mystérieux parchemin est arrivé avec un message :
«Utilisez WeakMap et WeakSet pour gérer vos secrets oubliés. Ils disparaîtront lorsqu’ils ne seront plus nécessaires. »
Intrigué, Dev a invoqué WeakMap et WeakSet.
WeakMap s'est présenté :
«Je détiens des paires clé-valeur, mais mes clés doivent être des objets. Si la clé disparaît, j’effacerai la paire sans que vous ayez à vous inquiéter. »
Les développeurs l'ont testé :
let key = { id: 1 }; // The magical key let weakMap = new WeakMap(); weakMap.set(key, "This is a secret"); // Storing a secret console.log(weakMap.get(key)); // Output: This is a secret // If the key is forgotten: key = null; // The secret vanishes from WeakMap, cleaned by the garbage collector
WeakMap expliqué :
« Je suis parfait pour stocker des métadonnées privées sur des objets, comme le suivi des sessions utilisateur ou la mise en cache des résultats. »
WeakSet s'est avancé :
«Je stocke aussi des objets, mais uniquement des objets. Si un objet disparaît, son appartenance à mon ensemble disparaîtra également. »
Dev a décidé de l'essayer :
let obj = { name: "Mystical Object" }; let weakSet = new WeakSet(); weakSet.add(obj); // Adding the object to the WeakSet console.log(weakSet.has(obj)); // Output: true // If the object is forgotten: obj = null; // The object is automatically removed from WeakSet
WeakSet suite :
«Je suis idéal pour suivre les objets qui doivent exister temporairement, comme les éléments DOM observés pour les changements.»
En travaillant avec eux, Dev a compris pourquoi ces structures étaient uniques :
Dev était ravi de ses nouveaux outils. WeakMap et WeakSet sont devenus ses fidèles alliés pour gérer efficacement la mémoire et protéger les données privées. Le sorcier apprit que même s’ils n’étaient pas toujours le bon choix, leur magie était inestimable dans les bonnes situations.
Et ainsi, au pays de JavaScript, les secrets sont restés en sécurité et la mémoire n'a plus jamais été gaspillée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!