
in JavaScript? Die Referenz eines Objekts ist in JavaScript eine starke Referenz. Das heißt, wenn将一个引用对象通过变量或常量保存, ist die Variable oder Konstante eine starke Referenz. und das Objekt wird nicht recycelt.
Schwache Referenzen in JavaScript: WeakMaps und WeakSets sind die einzigen Möglichkeiten, wie wir schwache Referenzen in JavaScript verwenden können.将一个对象作为键添加zu einer WeakMap oder einem WeakSet verhindert nicht, dass diese Objekte recycelt werden.
ist ein Kind A, das einen Hund hält und durch eine Hundekette verbunden ist.
Ein schwacher Hinweis ist, dass es eine Person B gibt, die auf den Hund zeigt, den A hält, und sagt: „Hey, da ist ein Hund, und B zeigt auf den Hund, aber zwischen ihnen ist nichts zusammengebunden.“
Wenn A die Hundeleine loslässt, rennt der Hund weg (der Müll wurde eingesammelt), unabhängig davon, ob B noch zeigt.
Wenn B jedoch nicht mehr auf den Hund zeigt, wird der Hund immer noch von A festgehalten, was keinen Einfluss darauf hat, ob er wegläuft. 
let people = {name:'Zhang San',age:25}
let people1 = people; Wenn wir im obigen Code {name:'张三',age:25} der Variablen people zuweisen, gibt es eine Linie, die sie im Speicher verbindet:

Erstellen Sie dann die Variable „people1“ und weisen Sie „people“ „people1“ zu. Dies entspricht dem Verweis von „people1“ auf dieses Objekt: 
Schauen wir uns an, was passiert, wenn wir die neu eingeführten Typen WeakSet und WeakMap in ES6 zum Speichern von Referenzwerten verwenden.
let people = {name:'Zhang San',age:25}
let people1 = people;
let set = new WeakSet();
set.add(people); Wir haben eine neue WeakSet()-Instanz erstellt und Personen über die Add-Methode hinzugefügt. Der Referenzwert, der Personen entspricht, ist {name:'张三',age:25} .

Es ist ersichtlich, dass sich der Wert {name:'张三',age:25} in der Set-Instanz auf {name:'张三',age:25} bezieht (im tatsächlichen Speicher zeigt er auf den Stapel der Daten). Zeigerreferenz, der Stapel zeigt auf den Wert der entsprechenden Adresse im entsprechenden Heap. Und es ist wichtig zu beachten, dass diese „Linie“ schwacher Referenzen transparent ist. Was bedeutet das? Was ist der Unterschied zwischen einem starken Zitat und einem starken Zitat?
Zusammenfassung in einem Satz: Eine starke Referenz wird durch die Referenz {name:'张三',age:25} als "Verbindung" erkannt, während eine schwache Referenz nicht erkannt wird. Das heißt, die Referenz weiß nicht, dass sie von der eingestellten Instanz referenziert wird.
Dies bedeutet, dass die Garbage Collection nicht weiß, dass die Referenz von der festgelegten Instanz referenziert wird. Wenn dann alle starken Referenzverbindungen der Referenz getrennt werden (die Variable wird auf Null gesetzt oder unter anderen Umständen), wird die Referenz als Müll zerstört, selbst wenn die festgelegte Instanz immer noch auf die Referenz verweist.
let people = {name:'Zhang San',age:25}
let people1 = people;
let set = new WeakSet();
set.add(people);
Leute = null;
people1 = null; Was passiert, wenn wir alle starken Referenzen trennen?

Da alle starken Referenzen getrennt sind, geht die Garbage Collection davon aus, dass die Referenz {name:'张三',age:25} nicht mehr benötigt wird, und zerstört sie. Dann existiert die von der entsprechenden Set-Instanz verwendete Referenz nicht mehr, auch wenn die Set-Instanz die Referenz noch verwendet.
1. Die Referenz auf das Objekt im WeakSet ist eine schwache Referenz. Das heißt, selbst wenn die Schwachstelle auf ein Objekt „referenziert“, zählt die Garbage Collection diese Referenz nicht als „Referenz“. Solange keine starken Referenzen an anderer Stelle vorhanden sind, kann dieses Objekt jederzeit wiederverwendet werden. Es kann nur Referenztypen speichern und nicht aufgezählt oder gelöscht werden.
2. WeakMap ähnelt Map, ist jedoch nicht aufzählbar, kann nicht gelöscht werden und das durch den Schlüssel referenzierte Objekt ist eine schwache Referenz.
3. WeakSet eignet sich zum vorübergehenden Speichern einer Gruppe von Objekten und zum Speichern von an die Objekte gebundenen Informationen. Solange diese Objekte extern verschwinden, verschwinden ihre Referenzen im WeakSet automatisch. Aufgrund der oben genannten Merkmale sind Mitglieder von WeakSet nicht als Referenz geeignet, da sie jederzeit verschwinden.
4. Starke Referenzen vergessen manchmal die Dereferenzierung, was dazu führt, dass der Speicher nicht freigegeben werden kann, was zu Speicherverlusten führen kann. Schwache Referenzen sind nicht im Garbage-Collection-Mechanismus enthalten, sodass dieses Problem nicht besteht.