微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 了解弱地图

ECMAScript 6引入了弱映射,在Node.JS v0.11.3中可以使用–harmony标志.请考虑以下几点.
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 举报,一经查实,本站将立刻删除。

相关推荐