ES6中WeakSet数据结构的常用方法和使用场景

ES6中的WeakSet数据结构

WeakSet 是一种类似于 Set 的集合,但只接受对象作为成员,并且这些对象都是弱引用,不会阻止垃圾回收。

常用方法
  1. add(value)

    WeakSet 中添加一个对象。

    javascript 复制代码
    const ws = new WeakSet();
    const obj = { name: 'John' };
    ws.add(obj);
  2. has(value)

    检查某个对象是否在 WeakSet 中,返回布尔值。

    javascript 复制代码
    ws.has(obj);  // true
  3. delete(value)

    WeakSet 中删除某个对象,返回布尔值表示是否成功删除。

    javascript 复制代码
    ws.delete(obj);  // true
特性
  • 只接受对象类型值,不能存储原始类型。
  • 弱引用:如果对象在其他地方没有引用,会被自动垃圾回收,无需手动管理。
  • 不支持迭代操作 (forEachsizefor...of)。
使用场景
  1. DOM 节点的临时存储

    可以将 WeakSet 用于存储可能会被动态移除的 DOM 节点。由于是弱引用,当 DOM 节点被移除时,WeakSet 也会自动释放对它的引用,避免内存泄漏。

  2. 对象的存在性跟踪

    WeakSet 中追踪对象,而不用担心对象被垃圾回收。

总结

WeakSet 适用于管理短期对象引用,特别是在内存管理和垃圾回收方面有优势,常用于动态对象或 DOM 节点的场景。

相关推荐
Louis Maos3 小时前
堆与栈分配的本质区别
java·开发语言
小夏卷编程3 小时前
ant-design-vue 1.x版本自定义可拖拽弹框
前端·javascript·vue.js
人道领域3 小时前
【零基础学java】(HashMap源码解析--添加第一个元素)
java·哈希算法·散列表
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 果蔬禽蛋生鲜食品采购配送系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
zfj3214 小时前
java线程的不同状态下调用interrupt()方法后的行为及注意事项
java·开发语言·interrupt·线程中断·线程状态
廋到被风吹走4 小时前
【Java】【Jdk】Jdk17->Jdk21
java·开发语言
sanshizhang5 小时前
若依框架,分页如何实现自定义每页记录数量
javascript·vue.js
专注前端30年5 小时前
Vue3 watchEffect详解:核心用法与原理剖析
前端·javascript·vue.js
hwt10703598985 小时前
Vue项目,解决Node依赖错误问题
前端·javascript·vue.js
叁散5 小时前
实验一:船舶位置感知与MMSI数据分析
java