Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Einführung in die neue WeakSet-Datenstruktur in ES6

Detaillierte Einführung in die neue WeakSet-Datenstruktur in ES6

巴扎黑
巴扎黑Original
2017-08-11 11:05:591340Durchsuche

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!

Stellungnahme:
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