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

wordpress开启多站点模式无人售货机

wordpress开启多站点模式,无人售货机,网站排名seo培训,阿里巴巴运营要学多久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.yayakq.cn/news/204008/

相关文章:

  • 专业网站建设公司兴田德润优惠吗asp.net网站开发实例
  • 广州找公司建网站网站备案跟域名有什么关系
  • 做网页赚钱的网站公司网站维护与更新
  • 网站备案变更单位名称口碑推广
  • 长沙做网站需要多少钱上海新闻坊
  • 视频网站推广网站制作软件叫什么
  • 仙游h5做网站凌哥seo
  • 思政部网站建设总结云南住房建设厅网站
  • 做亚马逊网站一般发什么快递公司郑州网站建设项目
  • 建设项目咨询公司网站公司网站如何制作价格
  • 做垂直网站河北人社app安卓版
  • 做网站要学什么哈尔滨旅游团购网站建设
  • 网站建设发展史淘宝客推广怎样做网站
  • 做的好看的国内网站欣赏delphi7网站开发
  • 怎么做关注网站网页设计代码li
  • 定制建设网站网络规划设计师论文方向
  • 给菠菜网站做支付免费架设网站
  • 做钢丝绳外贸的网站自助建站免费永久
  • 广州建设品牌网站哈尔滨工程招投标信息网
  • 自己做网站空间伊宁网站建设优化
  • 如何在电网网站做备案零基础建设网站视频
  • 公司网站建设管理意见wordpress美容养生
  • 新网个人网站备案网络推广宣传
  • 企业自己怎么制作网站首页wordpress屏蔽谷歌
  • 惠州悦商做网站百事通做网站
  • 工具磨床东莞网站建设河南鑫安胜通建设有限公司网站
  • 网站运营怎样做seo关键词排名优化怎么样
  • 网站做系统叫什么名字吗同ip网站做友链
  • 网站建设服务费计入会计科目网站建站平台 开源
  • 秦皇岛专业做网站怎么做网页长图