map object
- map 跟 object 都是键值对的方式,里面存的key,map相对灵活
- 应用场景跟object是一样的
- 判断当前键值对是否包含某个属性
- object需要循环遍历当前属性再去判断
- map直接通过.has()
- map的key也更加的多种多样
- map也有size的属性,对象里面没有
- 对象有自己的原型,原型链上面的键名可能回冲突
- 如果频繁的增删,map的性能更加有优势
let m = new Map()
let obj = {
name = 'juejin'
}
m.set(obj, 'es')
console.log(m)
console.log(m.get(obj))
// m.delete(obj)
console.log(m.has(obj))
let map = new Map([
['name','xx'],
['age', 5]
])
console.log(map)
console.log(map.size)
console.log(map.get('age'))
map.set('name', 'zhangsan')
// 遍历
map.forEach((value, key) => console.log(value, key))
for(let [key, value] of map){
console.log(key, value)
}
for(let [key] of map.keys()){
console.log(key)
}
for(let [value] of map.values){
console.log(value)
}
for(let [key, value] of map.entries){
console.log(key, value)
}
//weakMap
let wm = new weakMap()
wm.set([1], 2)
wm.set({
name: 'juejin'
}, 'es')
// weakMap 不支持clear,也不支持遍历,也没有size
let wm = new weakMap()
let elem = document.getElementsByTagName('h1)
wm.set(elem, 'info')
console.log(wm.get(elem))