WeakMap(ES6)

Map本质上是一个键值对的集合。和传统对象结构相比,传统的对象只能用字符串作为键名,这就在使用上造成了很大的限制了。这也是新增 Map 的原因之一。Map类似于对象,但是键名不限于字符串,可以说Object结构提供键-值对应,Map结构提供值-值对应因此其实采用map结构会优于传统对象.

Map 的特点:

  • Map 默认情况下不包含任何键,所有键都是自己添加进去的。不同于 Object 原型链上有一些默认的键。
  • Map 的键可以是任意类型数据,就连函数都可以。
  • Map 的键值对个数可以轻易通过size属性获取,Object 需要手动计算。
  • Map 在频繁增删键值对的场景下性能要比 Object 好。

**WeakMap **
WeakMap是 ES6 中新增的一种集合类型,叫做“弱映射”。它和Map是兄弟关系,与Map的区别就在于这个弱字,API 还是Map的那套(只有set get has delete).

  • WeakMap 只能将对象作为键名,null 除外。
  • WeakMap 的键名引用的对象是弱引用。(强引用必须手动删除引用,否则会造成内存泄露。弱引用:不能确保其引用的对象不会被垃圾回收机制回收的引用,一个对象若只被若引用所引用过,则被认为是不可访问的)
  • 不可遍历,WeakMap对键名所引用的对象是弱引用关系,因此WeakMap内部成员是会却决于垃圾回收机制有没有执行,运行前后成员个数很可能是不一样的,而垃圾回收机制的执行又是不可预测的,因此不可遍历.
  • 使用场景:① DOM节点元数据 ②部署私有属性 ③ 数据缓存

总结,Map 的键可以是任意类型,WeakMap 只接受对象作为键(null除外),不接受其他类型的值作为键。Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键; WeakMap 的键是弱引用,键所指向的对象可以被垃圾回收,此时键是无效的。Map 可以被遍历, WeakMap 不能被遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简 。单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值