let weakMap = WeakMap(); let key = []; let rubbish = 'fish cans'; weakMap.set(key,rubbish); rubbish = 'empty bottle'; // Prints "fish cans" console.log(weakMap.get(key));
我的印象是,对于弱地图,从键到值的引用是弱的,所以如果唯一引用的值是键,那么该值就不能再被访问了.
为什么值“鱼罐头”仍然可以访问,而不是垃圾收集?可变垃圾不再引用它,从钥匙到“鱼罐”的引用是弱的,即从垃圾收集器的角度来看是不存在的.我失踪了什么
解决方法
WeakMap are intended to provide a mechanism for dynamically associating state with an object in a manner that does not “leak” memory resources if,in the absence of the WeakMap,the object otherwise became inaccessible and subject to resource reclamation by the implementation’s garbage collection mechanisms.
假设你有一个DOM元素,并希望将一些数据与它相关联,并使用WeakMap:weakMap.set(domElement,data);.当DOM元素被删除时,弱地图中的条目也被删除.
另一方面,您不需要在DOM元素存在的情况下删除数据,因为在弱映射之外没有其他引用.
除此之外,“鱼罐”是一种原始类型,因此不受垃圾收集的影响.
原文地址:https://www.jb51.cc/js/151715.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。