WeakMap permite utilizar objetos como claves. No tiene ningún método para conocer la longitud del mapa. La longitud siempre es 1. La clave no puede ser valores primitivos
Una advertencia acerca del uso de object como clave es que, dado que todos los objetos son por defecto singletons en JavaScript, deberíamos crear una referencia de objeto y usarla .
Esto se debe a que cuando creamos objetos anónimos, son diferentes.
if ({} !== {}) { console.log('Objects are singletons') };
// will print "Objects are singletons"
Así, en el siguiente escenario, no podemos esperar para obtener el valor
var wm = new WeakMap()
wm.set([1],'testVal');
wm.get([1]); // will be undefined
Y el siguiente fragmento de código funciona como se esperaba.
var a = [1];
wm.set(a, 'testVal');
wm.get(a); // will return 'testVal'
Las respuestas aquí son todas incorrectas. Lo único "débil" en un mapa débil son las teclas. Es decir, si tiene un valor clave en un mapa débil que a diferencia de un "Mapa" regular, no evitará que se recolecte basura. Esto es útil, por ejemplo, para extender objetos desde el exterior sin interferir con la recolección de basura. En particular, la respuesta de Raynos solo explica qué es un Mapa. –
Relacionados: [¿Cuáles son los usos reales de ES6 WeakMap?] (Http://stackoverflow.com/q/29413222/1114) –
** Advertencia: Ambas respuestas aquí son incorrectas **. Consulte la publicación vinculada en el comentario anterior para obtener respuestas significativas. –