Map
函数、对象、基本类型都可以作为键或值
声明定义
可以接受一个数组作为参数,该数组的成员是一个表示键值对的数组。
javascript
let m = new Map([
['k1', 'v1'],
['k2', 'v2']
]);
console.log(m)// {'houdunren' => '后盾人', 'hdcms' => '开源系统'}
使用set
方法添加元素,支持链式操作
对于键是对象的Map
, 键保存的是内存地址,值相同但内存地址不同的视为两个键。
WeakMap
WeakMap 对象是一组键/值对的集
- 键名必须是对象
- WeaMap对键名是弱引用的,键值是正常引用
- 垃圾回收不考虑WeaMap的键名,不会改变引用计数器,键在其他地方不被引用时即删除
- 因为WeakMap 是弱引用,由于其他地方操作成员可能会不存在,所以不可以进行
forEach( )
遍历等操作 - 也是因为弱引用,WeaMap 结构没有keys( ),values( ),entries( )等方法和 size 属性
- 当键的外部引用删除时,希望自动删除数据时使用
WeakMap