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 小时前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
Electrolux1 小时前
[onlyoffice-v9]纯前端怎么实现编辑预览office
前端·javascript·github
VidDown1 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
折哥的程序人生 · 物流技术专研2 小时前
Java 23 种设计模式:从踩坑到精通 | 原型模式 —— 克隆对象,深拷贝与浅拷贝的坑你踩过吗?
java·设计模式·架构·原型模式·单一职责原则
装不满的克莱因瓶2 小时前
基于 OpenResty 扩展开发实现动态服务注册与发现能力
java·开发语言·架构·openresty
程序员小羊!2 小时前
06Java 异常机制与常用类
java
kyriewen2 小时前
我读了一遍 Babel 编译后的 async/await,终于搞懂了它的原理(附 20 行手写实现)
前端·javascript·面试
weixin_523185322 小时前
Java基础知识总结(四):引用数据类型与参数传递机制
java·开发语言·python
宸津-代码粉碎机3 小时前
Spring AI企业级实战|从RAG优化到Agent多工具调度
java·大数据·人工智能·后端·python·spring
噢,我明白了3 小时前
QueryWrapper的使用
java