Map对象:
操作Map:
1.创建:new Map()
2.设置:map.set(k,v)
3.获取map.get(k)
4.查找键是否存在:map.has(k)
5.删除键:map.delete(k)
6.清空:clear()
6.大小:size属性
var f=function(){};
//1.创建
var map=new Map();
//2.添加
map.set(f,'hello');
//3.获取
console.log(map.get(f));
//4.判断
console.log(map.has(f));//true
//5.删除
map.delete(f);
//6.size
console.log(map.size);//0
//7.clear
map.clear();//清空
var arr=[1,2,3];
var map2=new Map();
map2.set(arr,'数组作为key');
console.log(map2.get(arr));//数组作为key
//遍历
//1.for...of
var map3=new Map();
map3.set('1','li-1');
map3.set('2','li-2');
map3.set('3','li-3');
for(var [key,value] of map3){
console.log(key,value)
}
//2.forEach()
map3.forEach(function(value,index,map){
console.log(value,index);
})
//3.entries() keys()
for(let key of map3.keys()){
console.log(key);//1 2 3
}
for(let obj of map3.entries()){
console.log(obj);
}
WeakMap:专用场合是它的键所对应的对象,可能会在将来消失。WeakMap结构有助于防止内存泄漏
WeakMap结构与Map结构基本类似,区别是:
1.只接受对象作为键名(null除外),不接受其他类型的值作为键名,而且键名所指向的对象,不计垃圾回收机制。
2.键名是对象的弱引用,所有其所对应的对象可能会被自动回收,当对象回收后,WeakMap自动移除对应的键值对
//WeakMap
var map4=new WeakMap();
map4.set(1,2);//Invalid value used as weak map key
map4.set({},2);