javascript – 了解弱地图

前端之家收集整理的这篇文章主要介绍了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元素存在的情况下删除数据,因为在弱映射之外没有其他引用.

除此之外,“鱼罐”是一种原始类型,因此不受垃圾收集的影响.

猜你在找的JavaScript相关文章