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元素存在的情况下删除数据,因为在弱映射之外没有其他引用.

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...