相关疑难解决方法(0)

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万
查看次数

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 Set和WeakSet有什么区别?

ECMAScript 6有这些非常相似的集合:SetWeakSet.他们之间有什么区别?

javascript weak-references ecmascript-6

11
推荐指数
2
解决办法
2411
查看次数