weakmap和weakset的主要作用是存储弱引用对象,避免内存泄漏。当对象仅被weakmap或weakset引用时,仍可被垃圾回收机制回收,而map和set的引用会阻止对象被回收。例如,将对象设为null后,若仅被weakmap引用,则该对象可被回收。适用weakmap的场景包括:1. 存储私有数据或元数据,如记录dom元素状态而不污染属性;2. 缓存对象相关数据,如组件状态或计算结果,对象销毁后缓存自动释放;3. 观察或监听对象行为,判断对象是否仍在使用中。weakset适用于:1. 标记对象是否已处理过;2. 防止循环引用,用于递归操作时避免无限循环;3. 临时存储对象集合,适合仅需判断对象是否存在的情况。注意事项包括:不支持迭代方法、键必须为对象、不可长期保存数据,因此应在涉及对象生命周期管理时使用,日常简单映射关系建议使用map或set。

在JavaScript中,WeakMap和WeakSet这两个数据结构看起来可能有点冷门,但它们其实有非常特定且实用的用途。简单来说,它们的主要作用是存储弱引用的对象,从而避免内存泄漏。
什么是“弱引用”?
“弱引用”的意思是:如果一个对象只被 WeakMap 或 WeakSet 引用,那它仍然可以被垃圾回收机制回收。这跟普通的 Map 和 Set 不一样,后者的引用会阻止对象被回收。
举个例子:
let obj = { name: 'test' };const map = new Map();map.set(obj, 'value');obj = null;// obj 还在 map 中,不会被回收登录后复制
文章来自互联网,不代表电脑知识网立场。发布者:,转载请注明出处:https://www.pcxun.com/n/719407.html
