Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
JS中的WeakMap和WeakSet有什么用?_创想鸟

JS中的WeakMap和WeakSet有什么用?

weakmap和weakset的主要作用是存储弱引用对象,避免内存泄漏。当对象仅被weakmap或weakset引用时,仍可被垃圾回收机制回收,而map和set的引用会阻止对象被回收。例如,将对象设为null后,若仅被weakmap引用,则该对象可被回收。适用weakmap的场景包括:1. 存储私有数据或元数据,如记录dom元素状态而不污染属性;2. 缓存对象相关数据,如组件状态或计算结果,对象销毁后缓存自动释放;3. 观察或监听对象行为,判断对象是否仍在使用中。weakset适用于:1. 标记对象是否已处理过;2. 防止循环引用,用于递归操作时避免无限循环;3. 临时存储对象集合,适合仅需判断对象是否存在的情况。注意事项包括:不支持迭代方法、键必须为对象、不可长期保存数据,因此应在涉及对象生命周期管理时使用,日常简单映射关系建议使用map或set。

JS中的WeakMap和WeakSet有什么用?

在JavaScript中,WeakMap和WeakSet这两个数据结构看起来可能有点冷门,但它们其实有非常特定且实用的用途。简单来说,它们的主要作用是存储弱引用的对象,从而避免内存泄漏。

什么是“弱引用”?

“弱引用”的意思是:如果一个对象只被 WeakMap 或 WeakSet 引用,那它仍然可以被垃圾回收机制回收。这跟普通的 Map 和 Set 不一样,后者的引用会阻止对象被回收。

举个例子:

let obj = { name: 'test' };const map = new Map();map.set(obj, 'value');obj = null;// obj 还在 map 中,不会被回收

换成 WeakMap 的话:

let obj = { name: 'test' };const weakMap = new WeakMap();weakMap.set(obj, 'value');obj = null;// obj 可以被回收,weakMap 会自动清理

所以,当你需要关联一些对象,并且不希望影响这些对象的生命周期时,就可以考虑使用 WeakMap 或 WeakSet。

适合用 WeakMap 的场景

私有数据或元数据存储

想给某个对象加一些额外信息,又不想暴露出去?可以用 WeakMap 存储。比如你在写一个库,想记录每个 DOM 元素的状态,但又不想污染对象本身属性。

缓存对象相关数据

如果你做的是某种对象级别的缓存,比如组件状态、计算结果等,WeakMap 是不错的选择。一旦对象被销毁,缓存也会自动释放,不用担心内存泄漏。

观察/监听对象行为

在框架或工具中,有时你需要跟踪某些对象是否还在使用中,这时候 WeakMap 能帮你判断对象是否还存在。

WeakSet 适合做什么?

WeakSet 类似于 WeakMap,但它只能存储对象,并且不能重复添加同一个对象。

常见用途包括:

标记对象是否处理过比如你有一组对象需要处理,但不想重复处理,可以用 WeakSet 来记录已经处理过的对象。防止循环引用在递归操作或者深度遍历的时候,可以用 WeakSet 避免无限循环。临时存储对象集合如果你只需要知道一组对象是否存在,而不需要额外的数据,WeakSet 比 Set 更轻量安全。

注意事项和使用建议

WeakMap 和 WeakSet 都不支持迭代方法(比如 .keys()、.values()),也不能清空所有内容。它们的键必须是对象,不能是基本类型(如字符串、数字)。不要指望它们能“长期保存”数据,因为随时可能被垃圾回收。

如果你只是想做个简单的映射关系,还是用 Map 和 Set 更合适。只有在涉及对象生命周期管理时,才考虑使用弱引用版本。

总的来说,WeakMap 和 WeakSet 主要是用来解决特定问题的工具。虽然日常开发中不常直接使用,但在构建复杂系统或性能敏感的场景下,它们的价值就体现出来了。基本上就这些,不复杂但容易忽略。

以上就是JS中的WeakMap和WeakSet有什么用?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1505597.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JS中的let和var有什么区别?怎么用?
上一篇 2025年12月20日 03:49:32
JS中的Object.assign有什么用?怎么用?
下一篇 2025年12月20日 03:49:41

相关推荐

  • Sublime怎么清除缓存?缓存清理解决卡顿问题方案

    Sublime怎么清除缓存?缓存清理解决卡顿问题方案Sublime怎么清除缓存?缓存清理解决卡顿问题方案Sublime怎么清除缓存?缓存清理解决卡顿问题方案Sublime怎么清除缓存?缓存清理解决卡顿问题方案

    要清理sublime text缓存并解决卡顿问题,可按以下步骤操作:一、关闭并重新启动sublime text以释放临时资源;二、通过preferences → browse packages进入cache和index文件夹并清空内容;三、使用package control禁用不必要的插件以减少后台…

    2026年10月2日 • 用户投稿
    000
  • AlienwareArea51处理蓝屏代码0x0000001A的教程方法。

    AlienwareArea51处理蓝屏代码0x0000001A的教程方法。AlienwareArea51处理蓝屏代码0x0000001A的教程方法。AlienwareArea51处理蓝屏代码0x0000001A的教程方法。AlienwareArea51处理蓝屏代码0x0000001A的教程方法。

    蓝屏错误0x0000001A由内存管理问题引发,可按步骤排查:先运行chkdsk修复硬盘错误,再使用mdsched.exe检测内存故障;更新或回滚显卡与芯片组驱动至官方版本;临时关闭内存完整性以排除冲突;最后通过最小系统法测试硬件,隔离并替换故障内存条或设备。 如果您的Alienware Area5…

    2026年10月2日 • 用户投稿
    000
  • 如何导出和导入JS模块

    如何导出和导入JS模块如何导出和导入JS模块如何导出和导入JS模块如何导出和导入JS模块

    js模块的导出和导入主要有两种方式:1. es模块(esm),使用export和import关键字,支持命名导出、默认导出及整体导入,适用于现代浏览器和node.js(需配置.type=”module”或使用.mjs扩展名);2. commonjs,使用module.expo…

    2026年10月2日 • 用户投稿
    000
  • qq浏览器视频怎么投屏到电视_qq浏览器网页视频投屏到电视操作方法

    qq浏览器视频怎么投屏到电视_qq浏览器网页视频投屏到电视操作方法qq浏览器视频怎么投屏到电视_qq浏览器网页视频投屏到电视操作方法qq浏览器视频怎么投屏到电视_qq浏览器网页视频投屏到电视操作方法qq浏览器视频怎么投屏到电视_qq浏览器网页视频投屏到电视操作方法

    1、QQ浏览器支持通过内置投屏功能将视频无线推送到同局域网的电视,操作路径为:播放视频→点击投屏图标→选择电视设备→连接成功后手机可遥控播放。2、若电视支持DLNA协议,可在全屏播放后通过“更多”选项选择“投屏”或“DLNA投屏”连接目标设备实现画面同步。3、当设备无法直接识别时,可通过安装乐播投屏…

    2026年10月2日 • 用户投稿
    100
  • 现在是手机厂商们抛弃128GB的时候了

    现在是手机厂商们抛弃128GB的时候了现在是手机厂商们抛弃128GB的时候了现在是手机厂商们抛弃128GB的时候了现在是手机厂商们抛弃128GB的时候了

    9月10日,苹果正式推出iphone 17系列,带来一项引人注目的变革:全系机型统一标配256gb起跳的存储容量。 这一看似基础的硬件调整,实则掀开了智能手机存储新时代的序幕。在用户频频为128GB空间不够用而烦恼之际,苹果率先迈出一步,向整个行业传递明确信号:128GB的时代已经落幕。 数字生活的…

    2026年10月2日 • 用户投稿
    2100
  • win10如何格式化C盘_Win10重装系统时格式化C盘方法

    win10如何格式化C盘_Win10重装系统时格式化C盘方法win10如何格式化C盘_Win10重装系统时格式化C盘方法win10如何格式化C盘_Win10重装系统时格式化C盘方法win10如何格式化C盘_Win10重装系统时格式化C盘方法

    使用“重置此电脑”可直接清理C盘并重装系统;通过U盘启动PE系统能绕过运行环境格式化C盘;利用Windows安装U盘在安装过程中对C盘进行格式化是最常见可靠的方法。 如果您需要在重装Windows 10系统时彻底清除C盘上的所有数据并重新安装操作系统,直接通过文件资源管理器进行格式化是不可行的,因为…

    2026年10月2日 • 用户投稿
    100
  • windows怎么查看显卡信息_显卡驱动与信息查询

    windows怎么查看显卡信息_显卡驱动与信息查询windows怎么查看显卡信息_显卡驱动与信息查询windows怎么查看显卡信息_显卡驱动与信息查询windows怎么查看显卡信息_显卡驱动与信息查询

    如果您需要了解计算机中显卡的详细信息或检查驱动程序状态,可以通过系统内置工具或第三方方式获取相关数据。这些方法可以帮助您确认显卡型号、驱动版本以及当前运行状态。 本文运行环境:联想 Legion Y9000,Windows 11 一、使用设备管理器查看显卡信息 设备管理器是Windows系统提供的硬…

    2026年10月2日 • 用户投稿
    600
  • 正则表达式搜索替换的性能优化

    正则表达式搜索替换的性能优化正则表达式搜索替换的性能优化正则表达式搜索替换的性能优化正则表达式搜索替换的性能优化

    避免正则表达式性能问题及灾难性回溯的核心在于减少回溯、预编译表达式、选择合适工具。1. 避免贪婪匹配,使用更具体的字符类或限定符;2. 预编译正则表达式以减少重复编译开销;3. 使用非捕获组避免多余内存分配;4. 锚定模式提升匹配效率;5. 使用占有优先量词或固化分组禁止不必要的回溯;6. 用str…

    2026年10月2日 • 用户投稿
    100
  • 腾讯电脑管家怎么关闭自动升级-腾讯电脑管家关闭自动升级的方法

    腾讯电脑管家怎么关闭自动升级-腾讯电脑管家关闭自动升级的方法腾讯电脑管家怎么关闭自动升级-腾讯电脑管家关闭自动升级的方法腾讯电脑管家怎么关闭自动升级-腾讯电脑管家关闭自动升级的方法腾讯电脑管家怎么关闭自动升级-腾讯电脑管家关闭自动升级的方法

    腾讯电脑管家是由腾讯公司开发的一款免费电脑安全工具,集成了杀毒防护、系统清理、漏洞修复及软件管理等多种功能。该软件配备了腾讯自主研发的杀毒引擎与tav专业安全技术,能够有效抵御病毒、木马、勒索软件等各类网络威胁,全方位保障您的电脑安全。此外,其高效的系统优化能力可快速清理垃圾文件、卸载无用程序、管理…

    2026年10月2日 • 用户投稿
    300
  • 如何为Sublime Text的特定语言(如Python或JavaScript)设置专属配色?

    如何为Sublime Text的特定语言(如Python或JavaScript)设置专属配色?如何为Sublime Text的特定语言(如Python或JavaScript)设置专属配色?如何为Sublime Text的特定语言(如Python或JavaScript)设置专属配色?如何为Sublime Text的特定语言(如Python或JavaScript)设置专属配色?

    为sublime text的特定语言设置专属配色可提高代码可读性和编程效率。1. 安装package control包管理器,通过控制台运行安装代码并重启软件;2. 使用package control安装主题如material theme;3. 在用户设置中启用该主题及配色方案;4. 安装scope…

    2026年10月2日 • 用户投稿
    100
  • win10 chkdsk无法运行怎么办_win10磁盘检查工具chkdsk无法使用的修复方法

    win10 chkdsk无法运行怎么办_win10磁盘检查工具chkdsk无法使用的修复方法win10 chkdsk无法运行怎么办_win10磁盘检查工具chkdsk无法使用的修复方法win10 chkdsk无法运行怎么办_win10磁盘检查工具chkdsk无法使用的修复方法win10 chkdsk无法运行怎么办_win10磁盘检查工具chkdsk无法使用的修复方法

    首先以管理员身份运行命令提示符执行chkdsk C: /f /r,若无效则通过“此电脑”属性中的工具选项扫描驱动器,同时关闭第三方安全软件干扰,或进入安全模式下运行CHKDSK,还可使用DISM与SFC命令修复系统文件以恢复CHKDSK功能。 如果您尝试在Windows 10系统中运行磁盘检查工具C…

    2026年10月2日 • 用户投稿
    500
  • 抖音PC版如何查看数据分析_抖音PC版流量统计的实用指南

    抖音PC版如何查看数据分析_抖音PC版流量统计的实用指南抖音PC版如何查看数据分析_抖音PC版流量统计的实用指南抖音PC版如何查看数据分析_抖音PC版流量统计的实用指南抖音PC版如何查看数据分析_抖音PC版流量统计的实用指南

    首先通过抖音创作者服务中心查看官方数据,登录官网进入“数据中心”获取播放量、互动率等核心指标;其次可借助飞瓜数据、蝉妈妈等第三方工具分析受众画像与竞品表现;最后高级用户能用FineBI等BI工具导入数据,实现深度可视化分析。 如果您想在电脑上全面了解抖音账号的运营效果,但不清楚如何获取详细的流量和互…

    2026年10月2日 • 用户投稿
    300
  • windows怎么恢复记事本未保存的内容 windows恢复未保存记事本文件的方法

    windows怎么恢复记事本未保存的内容 windows恢复未保存记事本文件的方法windows怎么恢复记事本未保存的内容 windows恢复未保存记事本文件的方法windows怎么恢复记事本未保存的内容 windows恢复未保存记事本文件的方法windows怎么恢复记事本未保存的内容 windows恢复未保存记事本文件的方法

    首先检查系统临时文件夹和Recent目录中是否有未保存的记事本内容,其次通过全局搜索.tmp与.txt文件查找临时副本,若启用文件历史可还原指定时间点的文档,最后可用Recuva等工具深度扫描磁盘恢复丢失文本。 如果您在使用记事本编辑文件时意外关闭了程序或系统崩溃,导致内容未保存,Windows 系…

    2026年10月2日 • 用户投稿
    800
  • Sublime Text 中文显示乱码的编码设置方案

    Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案

    sublime text 中文显示乱码主要是由于文件编码与软件默认解码方式不匹配所致,解决方法包括:1. 使用 notepad++ 等工具检测文件实际编码(如 utf-8、gbk);2. 打开文件时通过 reopen with encoding 选择正确编码;3. 修改 sublime text 用…

    2026年10月2日 • 用户投稿
    900
  • DeepSeek Chat如何导出聊天记录 数据备份方法分享

    DeepSeek Chat如何导出聊天记录 数据备份方法分享DeepSeek Chat如何导出聊天记录 数据备份方法分享DeepSeek Chat如何导出聊天记录 数据备份方法分享DeepSeek Chat如何导出聊天记录 数据备份方法分享

    当您希望保存与DeepSeek Chat的对话内容以供后续查阅或作为资料备份时,可能会寻找导出聊天记录的方法。本文将为您详细介绍几种实用且易于操作的数据备份方法,通过分步讲解手动复制粘贴、利用浏览器打印功能以及借助扩展程序这三种方式,帮助您轻松地将重要的聊天记录完整地保存到本地。 ☞☞☞AI 智能聊…

    2026年10月2日 • 用户投稿
    100
  • TP-Link台式机蓝屏WiFi问题怎么办?实用指南教你恢复系统稳定。

    TP-Link台式机蓝屏WiFi问题怎么办?实用指南教你恢复系统稳定。TP-Link台式机蓝屏WiFi问题怎么办?实用指南教你恢复系统稳定。TP-Link台式机蓝屏WiFi问题怎么办?实用指南教你恢复系统稳定。TP-Link台式机蓝屏WiFi问题怎么办?实用指南教你恢复系统稳定。

    蓝屏由驱动冲突、配置错误或硬件问题引起,先更新或重装TP-Link无线网卡驱动,再尝试最后一次正确配置启动,进入安全模式排查软硬件问题,执行系统还原恢复系统状态,最后检查网卡与内存的物理连接稳定性。 如果您在使用TP-Link台式机时,连接WiFi后频繁出现蓝屏现象,则可能是由于驱动程序冲突、系统配…

    2026年10月2日 • 用户投稿
    300
  • windows怎么设置电源高性能模式_windows开启电源高性能模式步骤

    windows怎么设置电源高性能模式_windows开启电源高性能模式步骤windows怎么设置电源高性能模式_windows开启电源高性能模式步骤windows怎么设置电源高性能模式_windows开启电源高性能模式步骤windows怎么设置电源高性能模式_windows开启电源高性能模式步骤

    首先选择高性能电源模式以提升电脑性能,可通过控制面板、设置应用、命令提示符或创建自定义计划实现;具体步骤包括在控制面板中选择“高性能”计划、在设置中启用“最佳性能”模式、使用命令提示符输入powercfg指令切换,或基于高性能模板创建自定义方案。 如果您希望提升Windows电脑的运行速度和响应能力…

    2026年10月2日 • 用户投稿
    1500
  • Gemini能否处理Excel表格 数据处理功能实测

    Gemini能否处理Excel表格 数据处理功能实测Gemini能否处理Excel表格 数据处理功能实测Gemini能否处理Excel表格 数据处理功能实测Gemini能否处理Excel表格 数据处理功能实测

    本文将围绕Gemini模型在处理Excel表格数据方面的能力进行实际测试。通过具体的操作流程演示,本文将向您展示如何上传Excel文件,并借助精确的指令让Gemini完成数据清洗、整理、分析及洞察提取等一系列任务,让您清晰地了解其作为数据处理工具的潜力和使用方法。 ☞☞☞AI 智能聊天, 问答助手,…

    2026年10月2日 • 用户投稿
    1100
  • Java集合进阶之Map与Set应用_Java高效管理数据的集合框架

    Java集合进阶之Map与Set应用_Java高效管理数据的集合框架Java集合进阶之Map与Set应用_Java高效管理数据的集合框架Java集合进阶之Map与Set应用_Java高效管理数据的集合框架Java集合进阶之Map与Set应用_Java高效管理数据的集合框架

    map和set解决了java中高效查找、去重和键值关联的痛点:1. map通过键值对实现快速查找、配置管理、缓存和数据统计,避免list遍历的低效;2. set通过唯一性实现自动去重、高效成员检查和集合运算;3. 应根据顺序、排序和线程安全需求选择hashmap、linkedhashmap、tree…

    2026年10月2日 • 用户投稿
    100
  • 滴答清单日历视图使用方法详解_滴答清单日历视图切换与日程展示步骤

    滴答清单日历视图使用方法详解_滴答清单日历视图切换与日程展示步骤滴答清单日历视图使用方法详解_滴答清单日历视图切换与日程展示步骤滴答清单日历视图使用方法详解_滴答清单日历视图切换与日程展示步骤滴答清单日历视图使用方法详解_滴答清单日历视图切换与日程展示步骤

    滴答清单日历视图可整合任务与日程,支持按天、周、月查看。首先切换至日历标签,绑定系统日历同步外部事件。任务可添加截止日期或提醒时间,按设定显示在对应日期,支持拖动切换视图。通过设置可自定义显示模式、颜色分类及隐藏已完成任务,提升管理效率。(149字符) 如果您希望更直观地查看和管理每日任务与日程安排…

    2026年10月2日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信