关于是否需要使用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的变量会被销毁,因此应该不会造成内存泄露的。

老师能举个必须使用WeakMap例子吗?        

写回答

1回答

双越

2022-05-19

wangEditor 源码中,各个对象之间的关系,就用了很多 WeakMap https://github.com/wangeditor-team/wangEditor/blob/master/packages/core/src/utils/weak-maps.ts

这样,各个对象销毁时,就不用担心彼此之间的影响。

0
0

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1515 学习 · 642 问题

查看课程