Heim > Web-Frontend > js-Tutorial > Hauptteil

WeakSet in JS?

WBOY
Freigeben: 2024-07-19 19:27:52
Original
300 Leute haben es durchsucht

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.

Merkmale von WeakSet:

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.

Grundlegende Verwendung:

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

Lustiges Beispiel:

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!