let m = new Map()
let obj = {
name : "一起设计吧"
}
m.set(obj, "design") //Map就是键值对的形式,key可以是任何类型的值
console.log(m)
console.log(m.get(obj)) // 获取对应键值的值 design
console.log(m.has(obj)) // ture这里面查看这个键值有没有对应的值
let map = new Map([
["name", "成都"],
["age", 19]
])
console.log(map)
console.log(map.size) // 2
console.log(map.has("name")) //ture
console.log(map.get("age"))
map.set("address", "南充")
//map.delete("name")
console.log(map)
// 遍历
map.forEach((value, key) => {
console.log(value + "---" + key)
})
for (let [key,value] of map){
console.log(value + "---" + key)
}
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(value + "---" + key)
}
let weakMap = new WeakMap()
let arr = [1]
weakMap.set(arr,3) //WeakMap里面的 键值必须是引用数据类型及时数组和对象
weakMap.set({name:"一起设计"}, "design")
console.log(weakMap.get(arr)) //3
console.log(weakMap.get([1])) //undefined 主要原因是数组和对象都是引用数据类型,所以要变成变量才可以查找和获取
console.log(weakMap.has(arr))
//WeakMap不可遍历,不能size和clear 也是弱引用数据类型
//WeakMap 结构可以防止内存泄漏
let wm = new WeakMap()
let elem = document.getElementsByTagName("h1")
wm.set(elem, "info") //这里面的引用次数不会增加
console.log(wm.get(elem)) //
一起设计吧