【polar的复习笔记】——js基础之weakMap

133 阅读1分钟
  • WeakMap 是 JavaScript 中的一种内置对象,它提供了一种键-值对的存储方式。

  • 与普通的 Map 对象不同,WeakMap 的键只能是对象,并且对于不再被引用的键,其对应的值会被自动回收,不会造成内存泄漏

  • 特性:

    1. 只接受对象作为键
    2. 弱引用
    3. 不可迭代
    4. 没有公开的方法和属性,只有 set()、get() 和 delete(),has() 方法来操作键值对
    let obj = {};
    //创建一个FinalizationRegistry 对象,监听对象是否被销毁
    const registry = new FinalizationRegistry(function (val) {
        debugger;
        console.log('FinalizationRegistry', val);
        if (val === "obj") {
            console.log("obj对象被销毁");
        }
    });
    registry.register(obj, 'obj');
    let wp = new WeakMap();
    wp.set(obj, 'foo el');
    console.log(111, wp.get(obj)); // foo el
    setTimeout(() => {
        console.log(222, wp.get(obj)); // undefined
    }, 10000);
    obj = null;

输出结果

111 'foo el'
null
FinalizationRegistry info
info对象被销毁
222 undefined