WeakMap用于对象键的弱引用存储,支持私有数据绑定、计算结果缓存和DOM状态管理,避免内存泄漏。1. 通过privateData存储用户私有信息,对象销毁时自动释放;2. 以对象为键缓存process结果,回收时清理缓存;3. 用eventBound标记DOM事件绑定状态,DOM移除后记录自动消失。其不可遍历、无大小统计等限制保障了内存安全。

WeakMap 是 JavaScript 中一种特殊的键值对集合,它的键必须是对象,且对键的引用是“弱”的。这意味着如果一个对象不再被其他变量引用,它就可以被垃圾回收,即使它曾作为 WeakMap 的键。这个特性决定了 WeakMap 的使用场景非常特定,主要围绕内存管理和私有数据存储。
在不暴露数据的前提下,将附加信息绑定到对象上:
const privateData = new WeakMap();
class User {
constructor(name) {
this.name = name;
privateData.set(this, { token: 'secret', timestamp: Date.now() });
}
getToken() {
return privateData.get(this).token;
}
}以对象为键缓存耗时操作的结果,同时允许内存自动清理:
const cache = new WeakMap();
function process(obj) {
if (cache.has(obj)) {
return cache.get(obj);
}
const result = expensiveOperation(obj);
cache.set(obj, result);
return result;
}在不污染 DOM 或使用 data 属性的情况下跟踪状态:
立即学习“Java免费学习笔记(深入)”;
const eventBound = new WeakMap();
function bindOnce(element, handler) {
if (!eventBound.has(element)) {
element.addEventListener('click', handler);
eventBound.set(element, true);
}
}基本上就这些。WeakMap 不是万能存储工具,它不能遍历、不能获取大小、不能获取所有键,但正是这些限制让它在特定场景下更高效和安全。合理使用 WeakMap 能有效提升应用的内存表现,尤其在长期运行或处理大量对象时。不复杂但容易忽略。
以上就是JavaScript映射集合_WeakMap使用场景的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号