Heim > Artikel > Web-Frontend > WeakSet in JS?
Ein WeakSet in JavaScript ist eine spezielle Art von Menge, bei der die darin enthaltenen Objekte „schwache“ Referenzen haben. Das heißt, wenn keine weiteren Verweise auf ein im WeakSet gespeichertes Objekt vorhanden sind, kann das Objekt durch Garbage Collection erfasst werden. Im Gegensatz zu einem regulären Set akzeptiert WeakSet nur Objekte als Elemente und diese Objekte werden schwach gehalten. Dies macht WeakSet für Fälle nützlich, in denen Sie Objekte verfolgen möchten, aber nicht verhindern möchten, dass sie in den Müll gesammelt werden, wenn sie an anderer Stelle nicht mehr benötigt werden.
1 Nur Objekte: Ein WeakSet kann nur Objekte enthalten, keine primitiven Werte wie Zahlen oder Zeichenfolgen.
2 Schwache Referenzen: Die Referenzen auf Objekte in einem WeakSet sind schwach, was bedeutet, dass, wenn es keine andere Referenz auf ein Objekt gibt, es durch Müll gesammelt werden kann.
3 Keine Größeneigenschaft: Sie können die Größe eines WeakSet nicht ermitteln, da es die Anzahl seiner Elemente nicht offenlegt.
4. Keine Iteration:Sie können nicht über ein WeakSet iterieren, da es keine Methoden wie forEach oder Iteratoren wie ein Set hat.
let weakset = new WeakSet(); let obj1 = {name: "object1"}; let obj2 = {name: "object2"}; weakset.add(obj1); weakset.add(obj2); console.log(weakset.has(obj1)); // true console.log(weakset.has(obj2)); // true obj1 = null; // obj1 is eligible for garbage collection console.log(weakset.has(obj1)); // false
Stellen wir uns ein Szenario vor, in dem WeakSet wie ein Geheimclub für Spione ist. Dieser Club ist sehr geheim und wenn ein Spion nicht mehr aktiv ist, verschwindet er spurlos. Der Club zählt nie seine Mitglieder und Sie können keine Liste darüber erhalten, wer derzeit im Club ist. Sie können nur fragen, ob ein bestimmter Spion im Club ist.
// The Secret Spy Club class Spy { constructor(name) { this.name = name; } introduce() { console.log(`Hi, I am Agent ${this.name}`); } } let spy1 = new Spy("007"); let spy2 = new Spy("008"); let spyClub = new WeakSet(); // Adding spies to the secret club spyClub.add(spy1); spyClub.add(spy2); console.log(spyClub.has(spy1)); // true console.log(spyClub.has(spy2)); // true spy1.introduce(); // Hi, I am Agent 007 spy2.introduce(); // Hi, I am Agent 008 // Spy 007 finishes his mission and disappears spy1 = null; // Now Agent 007 is no longer in the club and is eligible for garbage collection // Let's see if spies are still in the club console.log(spyClub.has(spy1)); // false, because Agent 007 is no longer referenced console.log(spyClub.has(spy2)); // true, because Agent 008 is still active // Agent 008 finishes his mission too spy2 = null; // Now Agent 008 is also eligible for garbage collection // Checking club members again console.log(spyClub.has(spy2)); // false, no active spies left
In diesem lustigen Beispiel ist das WeakSet der geheime Spionageclub und die Spione sind Objekte. Wenn Spione (Objekte) ihre Missionen erfüllen und es keine weiteren Verweise auf sie gibt, verschwinden sie spurlos (der Müll wird eingesammelt), genau wie Objekte aus einem WeakSet entfernt werden, wenn an anderer Stelle im Code nicht mehr auf sie verwiesen wird.
Das obige ist der detaillierte Inhalt vonWeakSet in JS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!