
? Referencias fuertes en JavaScript: la referencia de un objeto es una referencia fuerte en JavaScript, es decir, cuando将一个引用对象通过变量或常量保存, entonces la variable o constante es una referencia fuerte. y el objeto no será Reciclar.
Referencias débiles en JavaScript: WeakMaps y WeakSets son las únicas formas en que podemos usar referencias débiles en JavaScript.将一个对象作为键添加a un WeakMap o WeakSet no impide que estos objetos se reciclen.
es un niño A que sostiene un perro y están conectados por una cadena para perros.
Una referencia débil es que hay una persona B señalando al perro sostenido por A y diciendo: Oye, hay un perro ahí, y B señala al perro, pero no hay nada atado entre ellos.
Cuando A suelta la correa del perro, el perro se escapará (se recogió la basura), independientemente de si B todavía está señalando.
Sin embargo, cuando B ya no señala al perro, A todavía lo sostiene, lo que no afectará si se escapa. 
let people = {name:'Zhang San',age:25}
let people1 = people; en el código anterior, cuando asignamos {name:'张三',age:25} a la variable personas, habrá una línea que las conectará en la memoria:

Luego cree la variable personas1 y asigne personas a personas1, lo que equivale a que personas1 también haga referencia a este objeto: 
Echemos un vistazo a lo que sucede cuando usamos los tipos WeakSet y WeakMap recientemente introducidos en ES6 para almacenar valores de referencia.
dejar gente = {nombre:'Zhang San', edad: 25}
let personas1 = personas;
dejar establecer = nuevo WeakSet();
set.add(people); Creamos una nueva instancia de WeakSet() y agregamos personas mediante el método add. El valor de referencia correspondiente a las personas es {name:'张三',age:25} .

Se puede ver que el valor {name:'张三',age:25} en la instancia establecida se refiere a {name:'张三',age:25} (en la memoria real, apunta a la pila de datos Referencia de puntero, la pila apunta al valor de la dirección correspondiente en el montón correspondiente). Y es importante señalar que esta "línea" de referencias débiles es transparente. ¿Qué significa esto? ¿Cuál es la diferencia entre esta y una cotización fuerte?
Resumen de una oración: la referencia {name:'张三',age:25} reconoce una referencia fuerte como una "conexión", mientras que una referencia débil no se reconoce. Es decir, la referencia no sabe que la instancia establecida hace referencia a ella.
Esto significa que la recolección de basura no sabe que la instancia establecida hace referencia a la referencia. Luego, si todas las conexiones de referencia sólidas de la referencia se desconectan (la variable se asigna a nula u otras circunstancias), la referencia se destruirá como basura, incluso si la instancia establecida todavía hace referencia a la referencia.
dejar gente = {nombre:'Zhang San', edad: 25}
let personas1 = personas;
dejar establecer = nuevo WeakSet();
set.add(personas);
gente = nulo;
people1 = null; ¿Qué pasará si desconectamos todas las referencias fuertes?

Debido a que todas las referencias fuertes están desconectadas, la recolección de basura considera que la referencia {name:'张三',age:25} ya no es necesaria y la destruirá. Entonces la referencia utilizada por la instancia del conjunto correspondiente ya no existe, incluso si la instancia del conjunto todavía usa la referencia.
1. La referencia al objeto en WeakSet es una referencia débil, es decir, incluso si el conjunto débil "hace referencia" a un objeto, la recolección de basura no cuenta esta referencia como una "referencia". siempre que no haya referencias sólidas en otros lugares, este objeto es inalcanzable y puede reciclarse en cualquier momento, solo puede almacenar tipos de referencia y no puede enumerarse ni borrarse.
2. WeakMap es similar a Map, pero no se puede enumerar, no se puede borrar y el objeto al que hace referencia la clave es una referencia débil.
3. WeakSet es adecuado para almacenar temporalmente un grupo de objetos y almacenar información vinculada a los objetos. Mientras estos objetos desaparezcan externamente, sus referencias en WeakSet desaparecerán automáticamente. Debido a las características anteriores, los miembros de WeakSet no son adecuados como referencia porque desaparecerán en cualquier momento.
4. Las referencias fuertes a veces se olvidan de desreferenciar, lo que hace que la memoria no se pueda liberar, lo que puede provocar pérdidas de memoria. Las referencias débiles no están incluidas en el mecanismo de recolección de basura, por lo que este problema no existe.