Maison > interface Web > js tutoriel > Une histoire de WeakMap et WeakSet en JavaScript : les gardiens des secrets oubliés

Une histoire de WeakMap et WeakSet en JavaScript : les gardiens des secrets oubliés

Susan Sarandon
Libérer: 2024-12-01 02:54:09
original
860 Les gens l'ont consulté

A Tale of WeakMap and WeakSet in JavaScript: The Guardians of Forgotten Secrets

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.


L'histoire commence : le problème des secrets oubliés

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 ? »


L'arrivée de WeakMap et WeakSet

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 : Le gardien des clés privées

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
Copier après la connexion

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 : L'observateur silencieux

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
Copier après la connexion

WeakSet suite :

«Je suis idéal pour suivre les objets qui doivent exister temporairement, comme les éléments DOM observés pour les changements.»


Pourquoi WeakMap et WeakSet sont spéciaux

En travaillant avec eux, Dev a compris pourquoi ces structures étaient uniques :

  1. Nettoyage automatique : les objets dans WeakMap et WeakSet sont automatiquement récupérés lorsqu'ils ne sont plus référencés ailleurs.
  2. Pas de propriété de taille : ils n'ont pas de taille ni d'itérateur, car ils veulent garder leurs secrets légers et invisibles.
  3. Efficacité de la mémoire : ils sont comme le vent : ils tiennent les choses sans serrer et les lâchent lorsque le moment est venu.

La morale de l'histoire

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal