new WeakMap 介绍

536 阅读1分钟
介绍:WeakMap结构与Map结构基本类似。
区别:它只接受对象作为键名,不接受其他类型的值作为键名。键名是对象的弱引用,当对象被回收后,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
    }
}