map 保存键值对,并且能够记住键的原始插入顺序,任何值(对象或者基本类型)都可以作为一个键或一个值
- 基本方法有 get, set, has, delete, clear
- 长度 .size
- 迭代 keys, values, extries, forEach
- 可以使用for ...of 迭代
- 任何值(对象或者基本类型)都可以作为一个键或一个值
- 健是强引用,即使健没有其他引用,它们仍会被Map对象所持有,不会被垃圾回收
- 键值对且需要迭代遍历或者确定大小的情况
weakmap满足map的一切条件,但是
- 基本方法有get, has, set, delete
- 没有clear方法
- 不能通过size获取长度
- 不可以使用for...of迭代
- 因为是弱引用
- 键 只能是对象,值可以是任意类
- 健 是弱引用,如果没有其他引用,则会被垃圾回收,这意味着 WeakMap中使用的对象作为键时,不会阻止这些对象被垃圾回收,因此通常用于不影响垃圾回收的情况下关联数据
- 相比map, weakmap有利于垃圾回收,参考
- 适用于需要弱引用键、不影响垃圾回收的情况下关联数据的场景。
更多内容,请参考官方文档
其实在实际开发过程中,一般的需求我们用object就能满足,map用的比较少!