ES6中加入了 Map 对象 可以以key value形式保存数据
map.set(key,value)保存数据 key可以是引用类型 存储的是地址
weakMap 使用方法与map一致 但根本上有不同
map 如果key使用引用类型 会导致gc 垃圾回收机制失效
let a = {
name:"jack"
}
a = null; // {name:"jack"} 在内存中被回收
如果引用类型失去了被调用 会被gc回收 如果被作为map的key就无法被gc回收 weakMap 会无视这个 直接将对象gc回收
const weak = new WeakMap();
let a = {
age:10
}
let b = {
age:15
}
weak.set(a,"jack");
console.log(weak.get(a))
const map = new Map();
map.set(b,"Tom")
console.log(weak);
console.log(map);
a = null;
b = null;
console.log(weak.get(a))//undefind
console.log(map);// 依旧会得到值
console.log(b);