Map weakMap
Map
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
- 任何值都可以作为键或值
- 可以记住原始插入顺序
- 键唯一
- 键对象强引用
使用场景:需要存储任意类型键值对,且需要对键值对进行遍历和管理的场景。
javascript
const MapData = new Map();
MapData.set('name', 'John');
MapData.set('name', 'Allen');
let obj = { a: 1 }
MapData.set(obj, obj);
MapData.set({ a: 1 }, obj);
obj = null // map强引用 即使为null 也不会被垃圾回收机制回收
/**Map(3) {
'name' => 'Allen',
{ a: 1 } => { a: 1 },
{ a: 1 } => { a: 1 }
} */
console.log(MapData)weakMap
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
- 键必须是对象,值任意
- 键唯一
- 键对象弱引用(所以不好遍历)
- 不支持遍历
使用场景:
javascript
const weakMapData = new WeakMap();
let obj2 = { a: 1 }
weakMapData.set(obj2, obj2);
weakMapData.set({ a: 1 }, obj2);
obj2 = null
// obj2 会被垃圾回收机制回收
console.log(weakMapData);