weakMap数据结构只接受 一个变量形式的对象 为key值 ,其设计思路是为了可以给对象身上存放一些数据。
let wm = new WeakMap();// 正确得使用方法let obj = { a: 1 }wm.set(obj, '前端伪大叔'); // 前端伪大叔console.log(wm.get(obj));// 错误得使用方法wm.set({a:1},'错误写法演示')console.log(wm.get({a:1})); // undefined
定义weakMap
// 使用new传入let ar1 = [1,2,3];let ar2 = [4,5,6];let wm1 = new WeakMap([[ar1,'前端伪大叔1'],[ar2,'前端伪大叔2']]);console.log(wm1.get(ar1)); // 前端伪大叔1
weakMap垃圾回收
weakMap的键名都是弱引用,所以垃圾回收机制不会将它考虑再内。只要不再使用weakMap里的键名对应的引用会自动消失。不需要手动删除。
api
weakMap的api只用4个,set设置数据/get获取数据/has判断传入值是否存在返回boolean/deleta删除数据
<body><div></div></body></html><script>let wm = new WeakMap();let div = document.querySelector('div');// 设置wm.set(div,'前端伪大叔')// 获取console.log(wm.get(div)); // 前端伪大叔// 判断是否存在console.log(wm.has(div)); // true// 删除wm.delete(div)console.log(wm.has(div)); // false</script>
