区别
答案: WeakMap 是弱引用
解析:WeakMap 的键是对象的时候,如果该对象被赋值为空时,垃圾回收机制会对那个对象所对应的值也进行垃圾回收
例子:
const map = new Map()
const obj = {
name: 'obj',
}
map.set(obj, 'xxxx')
当使用 map 时,由于对键值是强引用,map 的 obj 属性被赋值为空时,obj 所对应的 'xxxx’值其实还是存在的,并没有被回收,所以真正去清空应该使用 delete 方法,然后再清空 obj 的引用
map.delete(obj)
obj = null
而使用 WeakMap 的时候,想处理属性,直接清空 obj 的引用就行了,obj 所对应的值也会直接被回收
const map = new WeakMap(

文章讲述了JavaScript中的WeakMap与Map的区别,重点在于WeakMap的弱引用特性。当WeakMap的键对象被废弃时,其对应的值会自动被垃圾回收,而Map则不会。通过示例展示了在内存使用上,WeakMap如何在键对象被置为空后立即释放内存,而Map需要手动删除键值对并解除引用才能释放内存。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



