Heim > Web-Frontend > js-Tutorial > Eine Geschichte von WeakMap und WeakSet in JavaScript: Die Wächter vergessener Geheimnisse

Eine Geschichte von WeakMap und WeakSet in JavaScript: Die Wächter vergessener Geheimnisse

Susan Sarandon
Freigeben: 2024-12-01 02:54:09
Original
870 Leute haben es durchsucht

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

Es waren einmal im mystischen Land von JavaScript zwei spezielle Datenstrukturen, die still im Schatten lebten: WeakMap und WeakSet. Sie waren nicht so auffällig wie ihre Cousins ​​Map und Set, aber sie hatten eine geheime Kraft, die sie im magischen Bereich der Speicherverwaltung unersetzlich machte.


Die Geschichte beginnt: Das Problem der vergessenen Geheimnisse

Es gab einen weisen alten Zauberer namens Dev, der oft an großen magischen Projekten arbeitete. Er hatte ein häufiges Problem: Wann immer er Objekte in einer Karte oder einem Set speicherte, blieben diese Objekte für immer bestehen, wie Gäste, die eine Party nicht verlassen wollten. Auch wenn sie nicht mehr gebraucht wurden, blieben sie im Königreich und prägten wertvolle Erinnerungen.

Dev dachte: „Was wäre, wenn es eine Möglichkeit gäbe, Geheimnisse vorübergehend aufzubewahren, ohne mir Gedanken über das Aufräumen hinter mir machen zu müssen?“


Die Ankunft von WeakMap und WeakSet

Eines Tages traf eine mysteriöse Schriftrolle mit einer Nachricht ein:

„Verwenden Sie WeakMap und WeakSet, um mit Ihren vergessenen Geheimnissen umzugehen. Sie verschwinden, wenn sie nicht mehr benötigt werden.“

Fasziniert rief Dev WeakMap und WeakSet herbei.


WeakMap: Der Hüter privater Schlüssel

WeakMap stellte sich vor:

„Ich halte Schlüssel-Wert-Paare, aber meine Schlüssel müssen Objekte sein. Wenn der Schlüssel verschwindet, lösche ich das Paar, ohne dass Sie sich Sorgen machen müssen.“

Dev hat es getestet:

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
Nach dem Login kopieren

WeakMap erklärt:

„Ich bin perfekt zum Speichern privater Metadaten über Objekte geeignet, etwa zum Verfolgen von Benutzersitzungen oder zum Zwischenspeichern von Ergebnissen.“


WeakSet: The Silent Watcher

WeakSet trat vor:

„Ich speichere auch Objekte, aber nur Objekte. Wenn ein Objekt verschwindet, verschwindet auch seine Mitgliedschaft in meinem Set.“

Dev hat beschlossen, es auszuprobieren:

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
Nach dem Login kopieren

WeakSet Fortsetzung:

„Ich bin ideal zum Verfolgen von Objekten, die vorübergehend vorhanden sein müssen, z. B. DOM-Elemente, die auf Änderungen beobachtet werden.“


Warum WeakMap und WeakSet etwas Besonderes sind

Als Dev mit ihnen arbeitete, wurde ihm klar, warum diese Strukturen einzigartig waren:

  1. Automatische Bereinigung: Objekte in WeakMap und WeakSet werden automatisch in den Garbage Collection-Speicher verschoben, wenn sie nirgendwo anders mehr referenziert werden.
  2. Keine Größeneigenschaft: Sie haben weder eine Größe noch einen Iterator, weil sie ihre Geheimnisse leicht und unsichtbar halten möchten.
  3. Speichereffizienz: Sie sind wie der Wind – sie halten Dinge locker und lassen sie los, wenn die Zeit reif ist.

Die Moral der Geschichte

Dev war von seinen neuen Werkzeugen begeistert. WeakMap und WeakSet wurden zu seinen treuen Verbündeten bei der effizienten Speicherverwaltung und der Sicherheit privater Daten. Der Zauberer erfuhr, dass sie zwar nicht immer die richtige Wahl waren, ihre Magie jedoch in den richtigen Situationen von unschätzbarem Wert war.

Und so blieben die Geheimnisse im Land von JavaScript sicher und Speicher wurde nie wieder verschwendet.

Das obige ist der detaillierte Inhalt vonEine Geschichte von WeakMap und WeakSet in JavaScript: Die Wächter vergessener Geheimnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage