当前位置: 首页 > news >正文

深圳优质网站建设案例关键词排名查询软件

深圳优质网站建设案例,关键词排名查询软件,惠州做棋牌网站建设哪家技术好,企业级局域网搭建ES12 (ECMAScript 2021) 特性总结:WeakRef 1. WeakRef 概述 描述 WeakRef 是 ES12 引入的一个新特性,用于创建对对象的弱引用。弱引用不会阻止垃圾回收器回收对象,即使该对象仍然被弱引用持有。WeakRef 通常与 FinalizationRegistry 结合使…

ES12 (ECMAScript 2021) 特性总结:WeakRef

1. WeakRef 概述

描述

WeakRef 是 ES12 引入的一个新特性,用于创建对对象的弱引用。弱引用不会阻止垃圾回收器回收对象,即使该对象仍然被弱引用持有。WeakRef 通常与 FinalizationRegistry 结合使用,用于在对象被垃圾回收时执行清理操作。

语法

const weakRef = new WeakRef(targetObject);

主要方法

  • deref():返回弱引用指向的目标对象。如果目标对象已被垃圾回收,则返回 undefined

2. WeakRef 的用法

创建弱引用

const obj = { name: "Alice" };
const weakRef = new WeakRef(obj);// 访问目标对象
const target = weakRef.deref();
console.log(target); // { name: "Alice" }

检查对象是否被回收

let obj = { name: "Bob" };
const weakRef = new WeakRef(obj);// 解除对 obj 的强引用
obj = null;// 强制触发垃圾回收(仅用于演示,实际环境中不应手动调用)
global.gc();// 检查对象是否被回收
setTimeout(() => {const target = weakRef.deref();console.log(target); // undefined(对象已被回收)
}, 1000);

3. WeakRef 的使用场景

1. 缓存系统

在缓存系统中,可以使用 WeakRef 来缓存对象。当内存不足时,垃圾回收器会自动回收这些对象,从而避免内存泄漏。

示例
const cache = new Map();function getCachedData(key) {let cachedRef = cache.get(key);if (cachedRef) {const cachedData = cachedRef.deref();if (cachedData) {return cachedData;}}// 重新获取数据并缓存const newData = fetchData(key);cache.set(key, new WeakRef(newData));return newData;
}

2. 监听对象生命周期

结合 FinalizationRegistry,可以在对象被垃圾回收时执行清理操作。

示例
const registry = new FinalizationRegistry((heldValue) => {console.log(`Object with value ${heldValue} has been garbage collected.`);
});let obj = { name: "Charlie" };
const weakRef = new WeakRef(obj);// 注册清理回调
registry.register(obj, "some metadata");// 解除对 obj 的强引用
obj = null;// 当 obj 被垃圾回收时,会触发清理回调

3. 避免内存泄漏

在需要持有对象引用但又不想阻止垃圾回收的场景中,WeakRef 是一个理想的选择。

示例
class EventListener {constructor(target) {this.targetRef = new WeakRef(target);this.handleEvent = this.handleEvent.bind(this);target.addEventListener("click", this.handleEvent);}handleEvent(event) {const target = this.targetRef.deref();if (target) {console.log("Event triggered on:", target);} else {// 目标对象已被回收,清理事件监听器event.currentTarget.removeEventListener("click", this.handleEvent);}}
}

4. 注意事项

  1. 垃圾回收的不确定性

    • 垃圾回收的时机由 JavaScript 引擎决定,无法手动控制。
    • 即使对象不再被强引用,垃圾回收也可能不会立即执行。
  2. 避免滥用

    • WeakRefFinalizationRegistry 是高级特性,通常只在特定场景下使用。
    • 过度使用可能导致代码难以理解和维护。
  3. 兼容性

    • 确保目标运行环境支持 WeakRefFinalizationRegistry

5. 总结

特性描述使用场景
WeakRef创建对对象的弱引用,不会阻止垃圾回收器回收对象缓存系统、监听对象生命周期、避免内存泄漏
deref()返回弱引用指向的目标对象,若对象已被回收则返回 undefined检查对象是否仍然可用
结合 FinalizationRegistry在对象被垃圾回收时执行清理操作对象生命周期管理、资源清理

http://www.khdw.cn/news/20207.html

相关文章:

  • wordpress 两栏 主题搜索引擎优化的具体措施
  • 网络视频会议系统杭州seo代理公司
  • 专业网站建设商城价格微信小程序免费制作平台
  • 陕西富通建设有限公司网站电子网址怎么创建
  • 福州网站建设出格网络百度投诉中心在线申诉
  • 网站类别选择百度指数查询官网入口
  • 网站建设需要哪些人员哪里能搜索引擎优化
  • 中山骏域网站建设2022年关键词排名
  • 网站名词排名怎么做直链平台
  • 哪个网站有教做面食锦州seo推广
  • 东莞专业做淘宝网站建设佛山百度关键词排名
  • 网站建设联系电话做什么推广最赚钱
  • wordpress小工具选项网站优化的主要内容
  • 台湾做的h游戏下载网站有哪些百度手机应用市场
  • 装饰工程设计东莞网站建设电商网站seo优化
  • 购买域名的网站站长工具seo优化系统
  • 将网站收藏至ie收藏夹怎么做东莞营销型网站建设
  • 网站内容更新用什么热狗网站排名优化外包
  • 企业能建站吗制作网站需要什么技术
  • 配音秀做素材网站网络营销一般月薪多少
  • 做单页网站价格seo是哪个英文的简写
  • 网站建设怎么问问题南宁网站建设网站推广
  • 做家装的网站有什么区别seo中心
  • 哪个网站做外贸零售比较好呢网站播放视频速度优化
  • 官方网站建设公驻马店网站seo
  • 西宁做网站是什么宁德市区哪里好玩
  • 平面设计包括哪些方面的设计长清区seo网络优化软件
  • 购物网站最近浏览怎么做自动点击器app
  • 烟台 网站建设公关公司排名
  • 龙华营销型网站建设公司常用的关键词优化策略有哪些