一、写在前面
我们知道一个新的技术的出现,就是为了解决原有技术的痛点,在es6中新增了Map,就是为了解决原来的对象类型的一些痛点。我们在对象中无法使用对象类型作为对象的key。
const obj = {
name: 'dmc'
}
const obj2 = {
[obj]: 'dl'
}
console.log(obj2)
//{ '[object Object]': 'dl' }
原因是key会自动调用toString方法,转化为[object object]
。
但是在map类型中,我们可以将对象类型作为key
。如下所示。
const obj = {
name: 'dmc'
}
const map = new Map()
map.set(obj, 'dl')
console.log(map)
//Map(1) { { name: 'dmc' } => 'dl' }
二、Map
2.1、基本使用
let map = new Map()
let obj1 = ['sss', 'cccc']
let obj2 = ['ttt', 'dmc']
map.set(obj2, 'dl')
map.set(obj1, 'dmc')
console.log(map.has(obj1))
map.delete(obj1)
console.log(map.has(obj1))
map.clear()
console.log(map.get(obj1))
console.log(map)
2.2、循环遍历
let map = new Map()
let obj1 = ["sssc", "sevc"]
let obj2 = ["sss", "ee"]
map.set(obj2, "dl")
map.set(obj1, "dmc")
map.forEach((value, key, map) => {
console.log("====")
console.log(value)
console.log(key)
console.log(map)
console.log("====")
})
2.3、和对象的差别
对象的key
只能保存基本的数据类型,但是不能保存对象数据类型[object object]
,但是Map
数据类型可以。
三、WeakMap数据类型
1、WeakMap是弱引用类型
2、具有方法有:set,get, has, delete
3、应用场景:在响应式原理的应用:WeakMap和Map结合。