跳到主要内容

WeakRef

一、认识


WeakRef对象允许您保留对另一个对象的弱引用,而不会阻止被弱引用对象被GC回收

二、语法


const obj = {
type:'对象'
}
const weakRef = new WeakRef(obj);

三、属性


四、方法


4.1 weakRef.deref()

weakRef.prototype.deref() 返回当前实例的WeakRef对象所绑定的target对象,如果该target对象已被GC回收则返回undefined

语法

let obj = {
type:'对象',
data:[]
}

const weakRef = new WeakRef(obj);
console.log(weakRef.deref()); // {type: '对象', data: Array(0)}

五、引用


5.1 强引用

5.2 弱引用

WeakRef 是弱引用,那么弱引用的表现如何?

  • 强引用的表现

    const registry = new FinalizationRegistry((heldValue)=>{
    console.log('恭喜您,内存回收成功!',heldValue); // 回调函数不会执行
    });

    let obj = {
    type:'对象',
    data:[]
    }

    const objCopy = obj;

    registry.register(obj,'obj销毁');

    obj = null;
  • 弱引用的表现

    const registry = new FinalizationRegistry((heldValue)=>{
    console.log('恭喜您,内存回收成功!',heldValue); // 等待一段时间后会输出
    });

    let obj = {
    type:'对象',
    data:[]
    }

    const weakRef = new WeakRef(obj);

    registry.register(obj,'obj销毁');

    obj = null;