⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

JavaScript WeakRef 与 FinalizationRegistry

WeakRef弱引用(不阻止GC回收)、FinalizationRegistry对象被GC时回调、使用场景(缓存/资源清理)、警告:不要依赖GC时机(不同引擎行为不同)、WeakRef.deref()返回undefined表示已回收 · 难度:入门 · +10XP

JavaScript WeakRef 与 FinalizationRegistry —— 弱引用与清理回调

WeakRef让你持有一个对象的"弱引用"——不阻止垃圾回收。FinalizationRegistry在对象被GC后执行清理回调。

WeakRef

let obj = { data: 'important' };
const weakRef = new WeakRef(obj);
// obj还在 → weakRef.deref()返回对象
obj = null; // 没有强引用了
// GC后 → weakRef.deref()返回undefined

FinalizationRegistry

const registry = new FinalizationRegistry((value) => {
  console.log('对象被回收了,清理资源:', value);
});
let obj = {};
registry.register(obj, 'some-cleanup-value');
obj = null; // 被GC后触发回调

警告:不要依赖GC时机!不同引擎行为不同,GC可能很久才执行。

动手练习

  1. 基础练习:用WeakRef实现一个带自动清理的缓存——缓存项可被GC回收。
  2. 进阶应用:用FinalizationRegistry在对象被回收时自动释放关联资源。
  3. 项目实战:研究WeakRef在大型应用缓存策略中的应用。
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0