Heim >Web-Frontend >js-Tutorial >Detaillierte Einführung in die neue WeakSet-Datenstruktur in ES6
WeakSet ähnelt Set. Es ist auch eine Sammlung mit sich nicht wiederholenden Elementen. Der Unterschied zwischen ihnen besteht darin, dass die Elemente in WeakSet Objekte sein müssen und keine anderen Typen sein können. Als Nächstes erhalten Sie in diesem Artikel eine detaillierte Einführung in die Verwendung der neuen Datenstruktur WeakSet. Interessierte Freunde sollten einen Blick darauf werfen.
WeakSet ähnelt Set. Es handelt sich ebenfalls um Sammlungen mit sich nicht wiederholenden Elementen Der Unterschied zwischen ihnen besteht darin, dass die Elemente innerhalb von WeakSet Objekte sein müssen und keine anderen Typen haben dürfen.
Eigenschaften:
1. Das Element muss ein Objekt sein.
Fügen Sie ein Element vom Typ Nummer hinzu.
const ws = new WeakSet() ws.add(1)
Das Ergebnis ist ein Typfehler.
TypeError: Ungültiger Wert in schwacher Menge verwendet
Fügen Sie ein Objekt hinzu.
const ws = new WeakSet() var a = {p1:'1', p2:'2'} ws.add(a) console.log(ws.has(a));
OK hinzufügen, das Ergebnis zeigt:
true
Sie können die has-Methode von WeakSet verwenden, um zu bestimmen, ob ein Element befindet sich bereits in der eingestellten Mitte.
Wenn Sie das Element nicht speichern müssen, können Sie das Element mit der Löschmethode löschen.
2. Schwache Referenzen sind nicht in der Garbage Collection enthalten
Für zu WeakSet hinzugefügte Elementobjekte fügt WeakSet nicht 1 zum Referenzzähler des Elementobjekts hinzu Das zum WeakSet hinzugefügte Elementobjekt wird durch die Garbage Collection freigegeben, solange das Elementobjekt nicht von anderen Objekten als dem WeakSet referenziert wird. Das Elementobjekt im WeakSet wird automatisch ohne Speicherverlust freigegeben.
Aufgrund dieser Funktion ist die Leistung höher als bei der Karte. Sie kann für Szenarien verwendet werden, die eine nicht sequentielle Speicherung, keine Wiederholung und eine temporäre Speicherung erfordern.
const ws = new WeakSet() var a = {p1:'1', p2:'2'} ws.add(a) a = null console.log(ws.has(a));
Fügen Sie zuerst das Objekt zum WeakSet hinzu, setzen Sie das Objekt dann auf Null. Wenn dann die unten stehende has-Methode beurteilt wird, wird das Ergebnis angezeigt, das darauf hinweist Es gibt kein Objekt mehr im WeakSet. Das Objekt existiert.
false
3. Sie können
nicht durchlaufen, da es einen schwachen Verweis auf das interne Elementobjekt hat und jederzeit durch die Speicherbereinigung freigegeben wird Zeit, daher werden Traversal-Methoden wie size und forEach nicht unterstützt.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die neue WeakSet-Datenstruktur in ES6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!