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

相关推荐
Book_熬夜!1 分钟前
Vue2——组件的注册与通信方式、默认插槽、具名插槽、插槽的作用域
前端·javascript·vue.js·前端框架·ecmascript
小李同学_LHY7 分钟前
微服务架构中的精妙设计:环境和工程搭建
java·spring·微服务·springcloud
慕容魏7 分钟前
面经分享,中科创达(安卓开发,二面挂)
java·开发语言
不辉放弃26 分钟前
Java/Scala是什么
java·scala
猫猫不是喵喵.33 分钟前
vue 脚手架解决跨域问题
前端·javascript·vue.js
喵手44 分钟前
Java实现视频格式转换的完整指南:从FFmpeg到纯Java方案!
java·开发语言·ffmpeg
天上掉下来个程小白1 小时前
Redis-04.Redis常用命令-字符串常用命令
java·数据库·redis·springboot·苍穹外卖
三小河1 小时前
tailwindcss @4和@3版本项目引入,及自定义配置
前端·javascript·vue.js
Zz_waiting.1 小时前
多线程 - 线程安全 2 -- > 死锁问题
java·开发语言