当使用Set存储对象时,类似于脱离DOM的引用,如果不将其主动清除引用,其同样会造成内存不自动进行回收,如果需要使用Set引用对象,可以采用WeakSet,WeakSet对象允许存储对象弱引用的唯一值,WeakSet对象中的值同样不会重复,且只能保存对象的弱引用,且由于是对于对象的弱引用,其不会干扰Js的垃圾回收。
var elements = new Set(); var btn = document.getElementById("button"); elements.add(btn); function doStuff() { btn.click(); // 更多逻辑 } function removeButton() { document.body.removeChild(btn); // 按钮是 body 的后代元素 elements.delete(btn); // 清除Set中对于这个对象的引用 btn = null; // 清除引用 } 每日一题 https://github.com/WindrunnerMax/EveryDay 参考 https://zhuanlan.zhihu.com/p/60538328 https://juejin.im/post/6844903928060985358 https://jinlong.github.io/2016/05/01/4-Types-of-Memory-Leaks-in-JavaScript-and-How-to-Get-Rid-Of-Them/Js中常见的内存泄漏场景 (3)
内容版权声明:除非注明,否则皆为本站原创文章。