// Map
// let m = new Map()
// m.set('name', '小林')
// m.set('name', '小谢')
// console.log(m); // Map(1) { 'name' => '小谢' } 同键名会覆盖(即去重)
// let obj = { name: 1 }
// m.set(obj,'456') // 这个obj的引用空间还是被set所引用导致v8垃圾回收机制回收不了obj
// obj = null // 把obj清空
// console.log(m); // Map(2) { 'name' => '小谢', { name: 1 } => '456' }
// ===================================
// weakMap
let m = new WeakMap()
// TypeError: Invalid value used as weak map key
// WeakMap的键值只能是对象
// m.set('name','小林')
function Myfn () {}
let obj = new Myfn()
m.set(obj,'456')
obj = null // 构造函数Myfn的内存也被垃圾回收了
// 有个小细节点 控制台打印在垃圾回收清理之前执行
console.log(m);
Map和weakMap
最新推荐文章于 2024-09-06 22:36:14 发布