Quelle est l'utilisation correcte de WeakMap dans JavaScript? Quel genre de problèmes de synchronisation peuvent se produire lorsque je l'utilise? En particulier, je me demande ce qui se passerait dans la situation suivante:Problèmes de synchronisation lors de l'utilisation de WeakMap d'EcmaScript
var wm1 = new WeakMap()
var o1 = {},
o2 = function(){},
o3 = window;
// in other method:
wm1.set(o1, 37);
wm1.set(o2, "azerty");
if (wm1.has(o2)) {
//Garbage collection happen here, objects from wm1 may no longer exists
Console.log(wm1.get(o2)) // what will happen here? just undefined? null?
}
comment GC affectera WeakMaps?
Mise à jour: ma mauvaise, j'ai raté le fait que vous ne pouvez pas avoir de chaîne en tant que clés dans WeakMap, ma question ne fait pas si je prends en compte ce fait.
merci! Que faire si la clé de la carte est une chaîne? – vmg
@VitaliyGanzha: C'est la raison pour laquelle vous ne pouvez pas utiliser les chaînes comme clés dans une collection faible :-) – Bergi