关于是否需要使用WeakMap的问题
来源:8-23 手写JS深拷贝-考虑各种数据类型和循环引用

hwjhuvbj
2022-05-18
老师,我在网上看到关于弱引用的描述:
强引用,即使将obj 设为null,但target仍然引用之前的内存,因此这部分内存依然无法被释放:
let obj = { name : 'ConardLi'}; const target = new Map(); target.set(obj,'code秘密花园'); obj = null;
弱引用,当下一次垃圾回收机制执行时,这块内存就会被释放掉:
let obj = { name : 'ConardLi'}; const target = new WeakMap(); target.set(obj,'code秘密花园'); obj = null;
但是我感觉不到这里使用WeakMap的必要性,map定义在函数中,函数执行完毕后引用map的变量会被销毁,因此应该不会造成内存泄露的。
写回答
1回答
-
双越
2022-05-19
wangEditor 源码中,各个对象之间的关系,就用了很多 WeakMap https://github.com/wangeditor-team/wangEditor/blob/master/packages/core/src/utils/weak-maps.ts
这样,各个对象销毁时,就不用担心彼此之间的影响。
00
相似问题