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

相关推荐
四谎真好看1 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程1 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t1 小时前
ZIP工具类
java·zip
lang201509282 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan2 小时前
第10章 Maven
java·maven
saadiya~3 小时前
ECharts 实时数据平滑更新实践(含 WebSocket 模拟)
前端·javascript·echarts
百锦再3 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说3 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多3 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring
百锦再3 小时前
对前后端分离与前后端不分离(通常指服务端渲染)的架构进行全方位的对比分析
java·开发语言·python·架构·eclipse·php·maven