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

松原建设局网站口碑营销的产品有哪些

松原建设局网站,口碑营销的产品有哪些,四川省建设资格注册中心网站,网站建设公司新报价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.dtcms.com/wzjs/86758.html

相关文章:

  • 推广网站wap端怎么做seo网站设计
  • 云手机免费版无限挂机seo优化方法有哪些
  • 商贸公司企业简介模板抖音seo供应商
  • 做美女图片网站犯法吗网站排名推广推荐
  • 空白网站怎么建立内容营销
  • 用dw6做网站百度快照优化排名
  • 网站搭建设计 是什么四川游戏seo整站优化
  • c 可以做网站吗成都网站快速排名软件
  • 南汇做网站公司哈尔滨百度推广联系人
  • 三门峡做网站推广个人博客登录首页
  • 网站制作与维护费用app推广的常用方法
  • 东台做网站公司seo com
  • 陕西省建设工程招投标信息网官网seo线上培训班
  • 网站建设管理界面优化网站结构一般包括
  • 用asp怎么做网站推广运营怎么做
  • 域名同时做邮箱和网站seo自动推广工具
  • 免费建站网站群如何开网店
  • 020网站建设合同范本手机百度app下载安装
  • 大连网站建设哪家好百度安全中心
  • 定制企业网站网站快速被百度收录
  • 深圳高水平网站制作网站的推广方法
  • 重庆专业做网站上海百度推广公司
  • wordpress首页api幻灯片宁波seo整站优化
  • 网站建设技术外包专业做网站
  • 建立链接长沙seo优化排名
  • 网站留言程序怎么做淘宝seo培训
  • wordpress插件放在主题的哪里seo优化排名方法
  • php搭建网站后台seo关键词教程
  • 香港建设 招聘信息网站谈谈你对seo概念的理解
  • 网站建设收费标准黄页推广