WeakMapECMAScript 6中引入的数据结构的实际用途是什么?
由于弱映射的键会创建对其相应值的强引用,因此只要其键仍处于活动状态,确保插入到弱映射中的值永远不会消失,它不能用于备注表,缓存或您通常使用弱引用的任何其他内容,具有弱值的映射等.
在我看来,这个:
weakmap.set(key, value);
Run Code Online (Sandbox Code Playgroud)
......这只是一种迂回的说法:
key.value = value;
Run Code Online (Sandbox Code Playgroud)
我错过了哪些具体的用例?
在我重新进入JavaScript(和相关)之前,我已经完成了很多ActionScript 3,并且他们有一个Dictionary对象,它具有弱键,就像即将发布的WeakMap一样; 但AS3版本仍然像常规通用对象一样可枚举,而WeakMap特别没有.keys()或.values().
AS3版本允许我们安装一些非常有趣和有用的构造,但我觉得JS版本有些限制.这是为什么?
如果Flash VM可以做到这一点,那么是什么阻止浏览器做同样的事情呢?我读到了它是如何"非确定性"的,但这有点恰到好处?