WeakMap 是键必须为对象且弱引用的集合,不阻止垃圾回收,不可遍历、无 size 属性,适用于绑定元数据而不影响对象生命周期。

WeakMap 是 JavaScript 中一种特殊的键值对集合,它的核心特点是:键必须是对象,且对键的引用是“弱”的 —— 不会阻止垃圾回收器(GC)回收该对象。这使它和 Map 在行为、用途和限制上存在本质区别。
WeakMap 不接受字符串、数字、布尔值等原始类型作为键,否则会抛出 TypeError:
const wm = new WeakMap();
wm.set("hello", "world"); // ❌ 报错:Invalid value used as weak map key
wm.set({}, "data"); // ✅ 合法,键是空对象
这是因为“弱引用”只在对象层面有意义;原始值没有内存地址和引用关系,无法被弱持有。
立即学习“Java免费学习笔记(深入)”;
这是最根本的区别:
这个特性让它天然适合做“附着式元数据”——比如给某个 DOM 元素存私有状态,又不想因此拖住元素不被销毁。
WeakMap 故意不提供以下功能:
for...of、keys()、values()、entries() 遍历size 属性,无法知道当前存了几条clear() 方法(规范已弃用)这些限制不是疏漏,而是设计使然:避免开发者误以为能“观察”或“控制”这些弱关联的数据,也防止因遍历触发意外的内存驻留。
WeakMap 的定位很明确:当你需要把一些数据和某个对象绑定,但又不希望这种绑定影响对象的生命周期时,就用它。
基本上就这些。WeakMap 不是 Map 的“轻量版”,而是一种不同哲学的数据结构:它不管理数据的生命周期,而是让数据随对象自然消亡。
以上就是javascript中的WeakMap是什么_与Map有何不同?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号