当前位置: 首页 > 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.tj-hxxt.cn/news/48778.html

相关文章:

  • 新密做网站推广常用的网络推广手段有哪些
  • 公司网站开发费用好的竞价推广托管
  • 网站错误提示页设计创新驱动发展战略
  • 网站搜索怎么做的电商运营公司
  • 为博彩做网站日入两万广告推广渠道有哪些
  • 建设眼镜网站风格免费广告推广软件
  • 怎么免费建立自己的网站步骤电脑版百度入口
  • 昆明网站建设询力鼎科技著名的营销成功的案例
  • 如何做网站直播入口我要恢复百度
  • 望牛墩镇仿做网站重庆seo关键词排名
  • html5 图片网站昆明新闻头条最新消息
  • 德阳北京网站建设网络推广方案书模板
  • 个人做房产网站国际新闻头条今日国际大事
  • dede页码的调用 网站seo是什么及作用
  • 公众号关注武汉seo搜索优化
  • 网站怎么做认证外贸网站推广服务
  • wordpress迁移不能用seo搜索优化 指数
  • 网站宣传策略制作网站费用
  • 西安专业网站建设服务好网站建设的系统流程图
  • 溧阳建设集团有限公司网站软文案例300字
  • 好的网页设计网站做网站关键词优化的公司
  • 建设配资网站有要求吗短期培训学什么好
  • 青岛网站制作永诚整站seo优化公司
  • 排版网站推荐常见的网络推广方式有哪些
  • 手机网站编程语言网站seo公司
  • 东莞seo网站建设哪家靠谱企业培训机构排名
  • 做网站关键字搜索引擎优化特点
  • 青海省高等级公路建设管理局网站网络运营推广
  • 无锡网站建设专家无锡网站制作关键词优化排名软件推荐
  • 网络水果有哪些网站可以做百度搜索引擎广告