32.ES12-FinalizationRegistry类和We

2022-03-08  本文已影响0人  静昕妈妈芦培培

FinalizationRegistry类

FinalizationRegistry 提供了这样的一种方法:

let obj = {
  name: "why",
};
let info = {
  name: "lily",
};

//创建一个FinalizationRegistry 对象
const registry = new FinalizationRegistry(function (val) {
  //val为使用FinalizationRegistry 对象的register方法注册对象时,传入的第二个参数的值
  if (val === "obj") {
    console.log("obj对象被销毁");
  }
  if (val === "info") {
    console.log("info对象被销毁");
  }
});

//注册对象
registry.register(obj, "obj");
registry.register(info, "info");
obj = null;
info = null;

浏览器执行结果:

info对象被销毁
obj对象被销毁

WeakRef类

let obj = {
  name: "why",
};


//创建一个FinalizationRegistry 对象
const registry = new FinalizationRegistry(function (val) {
  //val为使用FinalizationRegistry 对象的register方法注册对象时,传入的第二个参数的值
    console.log("obj对象被销毁");
});
const foo = new WeakRef(obj);
console.log(foo.deref());

setTimeout(() => {
  console.log(foo.deref());
}, 10000);

obj = null;

非常感谢王红元老师的深入JavaScript高级语法让我学习到很多 JavaScript 的知识

上一篇下一篇

猜你喜欢

热点阅读