WeakMap 和 WeakSet 的使用

6 篇文章 0 订阅

WeakMapWeakSet 是 JavaScript 中的两种特殊的集合类型,它们与 MapSet 类似,但有一些区别。

WeakMap 是一种键是弱引用的集合类型,它的键只能是对象,而值可以是任意类型。当一个键不再被引用且没有其他引用指向它时,该键值对会被自动移除,这样有助于避免内存泄漏。

以下是 WeakMap 的简单示例:

let weakMap = new WeakMap();
let key = {};
weakMap.set(key, "value");
console.log(weakMap.get(key)); // 输出 "value"
key = null; // 将 key 置为 null
// 此时 key-value 对会被自动移除

WeakSet 是一种弱引用的集合类型,它只能包含对象,并且每个对象只能出现一次。与 WeakMap 类似,当一个对象不再被引用且没有其他引用指向它时,该对象会被自动移除。

以下是 WeakSet 的简单示例:

let weakSet = new WeakSet();
let obj1 = {};
let obj2 = {};
weakSet.add(obj1);
weakSet.add(obj2);
console.log(weakSet.has(obj1)); // 输出 true
obj1 = null; // 将 obj1 置为 null
// 此时 obj1 会被自动移除

总的来说,WeakMapWeakSet 主要用于需要存储对象集合,并且希望在对象不再被引用时自动清除的场景。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值