WeakMap要求key必须是一个对象类型。
Map和WeakMap的最大区别在于,Map中key是一个强引用类型,WeakMap是一个弱引用类型。
使用Map代码:
let obj = { message: "HelloWorld" };
let oneMap = new Map();
oneMap.set(obj, 'map');
obj = null
console.log(oneMap);
结果:
当obj删除了对 {message: “HelloWorld”} 的引用后,由于Map是采用强引用, {message: “HelloWorld”} 将不会被内存删除。
使用WeakMap代码:
let obj = { message: "HelloWorld" };
let weakmap = new WeakMap();
weakmap.set(obj, 'weakmap');
obj = null
console.log(weakmap);
结果:
当obj删除了对 {message: “HelloWorld”} 的引用后,由于没有其他操作对 {message: “HelloWorld”} 的强引用,于是 {message: “HelloWorld”} 将会在内存中被删除。