谈谈你对WeakMap和WeakSet的理解以及它们与普通Map和Set的区别。

WeakMap和WeakSet的理解

WeakMap和WeakSet是ES6中新增的两种数据结构,它们的主要特点是其成员都是弱引用。这意味着,当某个对象在WeakMap或WeakSet中作为键或成员存在时,如果这个对象在外部没有其他引用,那么它会被垃圾回收机制自动清理,而不需要手动删除。

文末有我帮助400多位同学成功领取到前端offer的场景题哦

  1. WeakMap:

    1. 类似于Map,但是键只能是对象类型,且键名所指向的对象是弱引用。
    2. 如果这个对象在其他地方没有被引用,那么它将会被垃圾回收,这是WeakMap的主要应用场景。
    3. WeakMap不接受其他类型的值作为键名,且其键名所指向的对象不计入垃圾回收机制。
    4. WeakMap不能遍历,提供的方法有get, set, has, delete。
  2. WeakSet:

    1. 类似于Set,但成员只能是对象类型,且成员对象是弱引用。
    2. 如果这个对象在其他地方没有被引用,那么它将会被垃圾回收,这是WeakSet的主要应用场景。
    3. WeakSet内部只能存放对象类型的数据,不能存放其他类型的数据。
    4. WeakSet里的对象是弱引用,即垃圾回收机制不会考虑该对象的引用,若外面已经没有该对象的引用了,则垃圾回收机制会回收该对象,WeakSet内部引用的该对象也会自动消失。
    5. WeakSet不能遍历,提供的方法有add, delete, has。

WeakMap和WeakSet与普通Map和Set的区别

  1. 键/成员类型

    1. WeakMap的键只能是对象类型,不接受其他类型的值作为键名;而Map的键可以是任意类型。
    2. WeakSet的成员只能是对象类型,不接受其他类型的数据;而Set的成员可以是任意类型。
  2. 引用方式

    1. WeakMap和WeakSet的成员都是弱引用,即如果对象在外部没有其他引用,它们会被垃圾回收机制自动清理。
    2. 而Map和Set的成员是强引用,即使没有其他引用,也需要手动删除。
  3. 遍历性

    1. WeakMap和WeakSet都不能遍历。
    2. 而Map和Set都可以遍历,提供了多种遍历方法。
  4. 应用场景

    1. WeakMap和WeakSet通常用于存储一些临时的对象或DOM节点,当外部该对象的引用消失了,WeakMap和WeakSet内部该对象的引用也自动消失了,不用担心内存泄漏。
    2. Map和Set则更多地用于数据重组和数据储存等场景。

- 堪称2024最强的前端面试场景题,让421人成功拿到offer

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值