最佳答案
当它们的键/值引用的对象被删除时,它们的行为不同。让我们看下面的示例代码:
var map = new Map();
var weakmap = new WeakMap();
(function(){
var a = {x: 12};
var b = {y: 12};
map.set(a, 1);
weakmap.set(b, 2);
})()
上面的 IIFE 已执行,我们无法再引用 {x: 12}
和 {y: 12}
。垃圾收集器继续从“WeakMap”中删除键 b 指针,并从内存中删除 {y: 12}
。但是在“Map”的情况下,垃圾收集器不会从“Map”中删除指针,也不会从内存中删除{x: 12}
。
总结:WeakMap 允许垃圾收集器完成它的任务而不是 Map。
引用文献:http://qnimate.com/difference-between-map-and-weakmap-in-javascript/
关于javascript - ES6 Map 和 WeakMap 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604168/