介绍:WeakMap结构与Map结构基本类似。
区别:它只接受对象作为键名,不接受其他类型的值作为键名。键名是对象的弱引用,当对象被回收后,WeakMap自动移除对应的键值对,WeakMap结构有助于防止内存泄漏。
区别:它只接受对象作为键名,不接受其他类型的值作为键名。键名是对象的弱引用,当对象被回收后,WeakMap自动移除对应的键值对,WeakMap结构有助于防止内存泄漏。
map 的定义
1、let weakMap = new WeakMap();
2、let map = new Map([[key,value],[key,value]]);
//默认带初始化参数的定义 注意:这里的key必须是对象
WeakMap对象的属性:无
WeakMap对象的方法: delete(key) : 删除指定的键/值对;
get(key) :返回Map对象key相对应的value值;
has(key) :返回布尔值, 其实就是返回Map对象是否有指定的key;
set(key):给Map对象设置key/value 键/值对, 返回这个Map对象;
WeakMap相对于Map少了很多的方法, 我们也可以自己再来实现这些方法,比如我们再实现一个Map实例的clear方法:
class ClearableWeakMap {
constructor(init) {
this._wm = new WeakMap(init)
}
clear() {
this._wm = new WeakMap()
}
delete(k) {
return this._wm.delete(k)
}
get(k) {
return this._wm.get(k)
}
has(k) {
return this._wm.has(k)
}
set(k, v) {
this._wm.set(k, v)
return this
}
}