标签: weakmap

ES6 WeakMap的实际用途是什么?

WeakMapECMAScript 6中引入的数据结构的实际用途是什么?

由于弱映射的键会创建对其相应值的强引用,因此只要其键仍处于活动状态,确保插入到弱映射中的值永远不会消失,它不能用于备注表,缓存或您通常使用弱引用的任何其他内容,具有弱值的映射等.

在我看来,这个:

weakmap.set(key, value);
Run Code Online (Sandbox Code Playgroud)

......这只是一种迂回的说法:

key.value = value;
Run Code Online (Sandbox Code Playgroud)

我错过了哪些具体的用例?

javascript weakmap ecmascript-6

374
推荐指数
7
解决办法
6万
查看次数

ES6 Map和WeakMap有什么区别?

看看这个这个 MDN页面,似乎地图和WeakMaps之间的唯一区别是WeakMaps缺少"大小"属性.但这是真的吗?他们之间有什么区别?

javascript ecmascript-harmony weakmap ecmascript-6

83
推荐指数
6
解决办法
2万
查看次数

为什么ES6 WeakMap不可枚举?

在我重新进入JavaScript(和相关)之前,我已经完成了很多ActionScript 3,并且他们有一个Dictionary对象,它具有弱键,就像即将发布的WeakMap一样; 但AS3版本仍然像常规通用对象一样可枚举,而WeakMap特别没有.keys().values().

AS3版本允许我们安装一些非常有趣和有用的构造,但我觉得JS版本有些限制.这是为什么?

如果Flash VM可以做到这一点,那么是什么阻止浏览器做同样的事情呢?我读到了它是如何"非确定性"的,但这有点恰到好处?

javascript enumerable weakmap ecmascript-6

27
推荐指数
1
解决办法
2050
查看次数

什么是ECMAScript 6 WeakMaps?

阅读此说明后:http://wiki.ecmascript.org/doku.php?id = eth:weak_maps

我试图抓住它,但我没有得到整体情况.这是什么一回事呢?它似乎在Firefox 6中得到支持:http://kangax.github.com/es5-compat-table/non-standard/

javascript specifications data-structures weakmap ecmascript-6

17
推荐指数
2
解决办法
2961
查看次数

使用WeakMaps在Javascript中创建常规弱引用

我试图用WeakMaps 做明显的事情:我想创建一个弱引用.特别是,我想要一个没有该列表影响监听器生命的事件监听器列表.

所以我很高兴能找到WeakMaps,直到我看到它们只是为了满足一个(相当罕见的)用例,扩展其他密封的对象.当我想要这样做时,我想不到,但我一直都需要听众列表.

这有可能以一些我没有想到的聪明方式使用WeakMaps吗?

javascript weak-references ecmascript-harmony weakmap ecmascript-6

16
推荐指数
1
解决办法
1122
查看次数

如何迭代弱图?

javascript WeakMap(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)不允许您按设计获取密钥或长度或大小.

是否有可能以某种方式循环条目?

如果没有.. Chrome控制台如何执行此操作?

在此输入图像描述

javascript garbage-collection iterator weakmap

16
推荐指数
2
解决办法
5840
查看次数

了解弱地图

ECMAScript 6引入了弱映射,在带有--harmony标志的Node.JS v0.11.3中可用.考虑以下.

let weakMap = WeakMap();
let key = [];
let rubbish = 'fish cans';

weakMap.set(key, rubbish);
rubbish = 'empty bottle';

// Prints "fish cans"
console.log(weakMap.get(key));
Run Code Online (Sandbox Code Playgroud)

我的印象是,对于弱映射,从键到值的引用很弱,因此如果对值的唯一引用是键,则无法再访问该值.

那么为什么值'fish cans'仍然可以访问而不是垃圾收集?可变rubbish不再引用它,并且从参考key'fish cans',从垃圾收集器的点即不存在的.我错过了什么?

javascript weakmap ecmascript-6

9
推荐指数
2
解决办法
3555
查看次数

对于WeakMap,"循环"引用是否会被视为"可达性"?

function f() {
  const w = new WeakMap();
  const o = {};

  w.set(o, { v: o });

  return w;
}

const weakMap = f();
Run Code Online (Sandbox Code Playgroud)

对于给定的代码,唯一的weakMap项目是否被认为是可达的?因此,它是否会被垃圾收集?

PS:这个问题是从规范的角度提出的,而不是特定的实现.

javascript weak-references weakmap

8
推荐指数
1
解决办法
285
查看次数

为什么不推荐使用WeakMap clear()方法?

我一直在使用JavaScript中的WeakMap,在检查文档后,我意识到该clear方法已被弃用/从ECMAScript 6中删除.

这是什么原因?为什么强迫我们做一个明确的功能,如:

clear() {
  this._weakmap = new WeakMap()
}
Run Code Online (Sandbox Code Playgroud)

javascript weakmap ecmascript-6

8
推荐指数
2
解决办法
634
查看次数

JavaScript(ES6) WeakMap garbage collection when set an object to null

I've just read that WeakMaps take advantage of garbage collection by working exclusively with objects as keys, and that assigning an object to null is equivalent to delete it:

let planet1 = {name: 'Coruscant', city: 'Galactic City'};
let planet2 = {name: 'Tatooine', city: 'Mos Eisley'};
let planet3 = {name: 'Kashyyyk', city: 'Rwookrrorro'};

const lore = new WeakMap();
lore.set(planet1, true);
lore.set(planet2, true);
lore.set(planet3, true);
console.log(lore); // output: WeakMap {{…} => true, {…} => true, {…} => true}
Run Code Online (Sandbox Code Playgroud)

Then I set the …

javascript null garbage-collection weakmap ecmascript-6

7
推荐指数
1
解决办法
530
查看次数