相关疑难解决方法(0)

你什么时候使用WeakHashMap或WeakReference?

使用弱引用是我从未见过的实现,所以我试图弄清楚它们的用例是什么以及实现如何工作.什么时候需要使用WeakHashMap或者WeakReference它是如何使用的?

java weak-references

161
推荐指数
5
解决办法
6万
查看次数

ES6 Map和WeakMap有什么区别?

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

javascript ecmascript-harmony weakmap ecmascript-6

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

ECMAScript 6:什么是WeakSet?

WeakSet应该通过弱引用来存储元素.也就是说,如果某个对象未被其他任何东西引用,则应该从WeakSet中清除它.

我写了以下测试:

var weakset = new WeakSet(),
    numbers = [1, 2, 3];

weakset.add(numbers);
weakset.add({name: "Charlie"});

console.log(weakset);

numbers = undefined;

console.log(weakset);
Run Code Online (Sandbox Code Playgroud)

即使我的[1, 2, 3]数组没有被任何引用引用,它也不会从WeakSet中删除.控制台打印:

WeakSet {[1, 2, 3], Object {name: "Charlie"}}
WeakSet {[1, 2, 3], Object {name: "Charlie"}}
Run Code Online (Sandbox Code Playgroud)

这是为什么?

另外,我还有一个问题.将对象直接添加到WeakSets有什么意义,如下所示:

weakset.add({name: "Charlie"});
Run Code Online (Sandbox Code Playgroud)

那些Traceur的故障还是我错过了什么?

最后,如果我们甚至无法迭代它并获得当前大小,那么WeakSet的实际用途是什么?

javascript ecmascript-6 traceur

52
推荐指数
4
解决办法
1万
查看次数

为什么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
查看次数

ES6 Set,WeakSet,Map和WeakMap

关于地图和弱地图已经存在一些问题,例如:ES6 Map和WeakMap有什么区别?但我想问一下,在哪种情况下我应该赞成使用这些数据结构?或者当我偏爱其他人时,我应该考虑什么呢?

来自以下网址的数据结构示例:https://github.com/lukehoban/es6features

// Sets
var s = new Set();
s.add("hello").add("goodbye").add("hello");
s.size === 2;
s.has("hello") === true;

// Maps
var m = new Map();
m.set("hello", 42);
m.set(s, 34);
m.get(s) == 34;

// Weak Maps
var wm = new WeakMap();
wm.set(s, { extra: 42 });
wm.size === undefined

// Weak Sets
var ws = new WeakSet();
ws.add({ data: 42 });
// Because the added object has no other references, it will not be held …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

5
推荐指数
1
解决办法
635
查看次数