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 节点的场景。

相关推荐
会发光的猪。13 分钟前
前端vue3若依框架pnpm run dev启动报错
前端·javascript·vue.js·前端框架·bug
羊小猪~~1 小时前
前端入门一之HTML知识讲解
前端·javascript·css·前端框架·html·html5
大黄瓜de冬天1 小时前
list集合常见去重方式以及效率对比
java·spring boot·list
JerryXZR1 小时前
前端开发中常见的ES6技术细节分享一
前端·javascript·es6
毕业设计制作和分享1 小时前
ssm好例文共享平台的设计与实现+jsp
java·开发语言·vue.js·spring boot·毕业设计·mybatis
TANGLONG2221 小时前
【初阶数据与算法】线性表之顺序表的定义与实现
java·c语言·数据结构·c++·python·算法·面试
morning_judger2 小时前
【设计模式系列】桥接模式(十三)
java·设计模式·桥接模式
大数据编程之光2 小时前
【蚂蚁SQL面试题】蚂蚁数据研发一面面试题
java·sql·面试
API_technology2 小时前
java 串口 驱动
java·大数据·开发语言·数据库
蒋桐城2 小时前
Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.
java·tomcat