问题标签 [weakmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3018 浏览

javascript - 什么是 ECMAScript 6 WeakMaps?

阅读此描述后:http ://wiki.ecmascript.org/doku.php?id=harmony:weak_maps

我试图掌握它,但我不了解整体情况。这是什么一回事呢?Firefox 6 似乎支持它:http: //kangax.github.com/es5-compat-table/non-standard/

0 投票
1 回答
897 浏览

javascript - 用于 DOM 节点引用的 IE8 兼容弱图

我想从字面上看Dictionary<Node, Object>

这基本上是一个ES6 WeakMap,但我需要使用 IE8。

我想要的主要功能是

  • 最小化内存泄漏
  • 在给定节点的对象上查找 O(1)。

我的实现:

我的实现是 O(1) 但有内存泄漏。

实现此以最大程度地减少内存泄漏的正确方法是什么?

0 投票
7 回答
34887 浏览

javascript - ES6 Map 和 WeakMap 有什么区别?

查看这个这个MDN 页面,似乎 Maps 和 WeakMaps 之间的唯一区别是 WeakMaps 缺少“大小”属性。但这是真的吗?他们之间有什么区别?

0 投票
1 回答
2919 浏览

javascript - 在 JavaScript 中使用元素作为哈希的键

我想创建一个以 DOM 元素为键的哈希。下面的代码说明了这一点:

如何确保 hash 映射到每个的唯一值Element
请注意,我不能使用原始 ID 字符串作为键,因为Element可以传入任意任意值,包括那些没有 id 的字符串。

0 投票
4 回答
4083 浏览

javascript - 了解弱地图

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

我的印象是,对于weak map,从键到值的引用是的,所以如果对值的唯一引用是键,那么就不能再访问值了。

那么为什么该值'fish cans'仍然可以访问而不是垃圾收集呢?该变量rubbish不再引用它,并且来自keyto的引用'fish cans'的,即从垃圾收集器的角度来看不存在。我错过了什么?

0 投票
1 回答
172 浏览

gwt - 在 GWT 中创建 WeakMap 包装器实现——出现错误

我最近一直在研究即将推出的 js(harmony)weakmap 支持,它将解决我目前遇到的许多复杂问题。幸运的是,有一个 shim ( https://github.com/Benvie/WeakMap ) 具有很好的浏览器支持,这让我开始实现 GWT 包装器。

我觉得这应该很简单,但是我的单元测试抛出错误。由于我对 JSNI 很陌生,我想它可能遗漏了一些微不足道的东西:

这是我的 GWT 课程:

这是我的测试:

这是我得到的错误:

还:

  • 我确信 javascript 被正确包含(我已经完成了足以知道的部分)
  • setup() 方法正确地创建了一个weakmap 对象并将其分配给nativeWeakMap javascript 对象。我可以将它打印到标准输出,所以我知道它不为空。

有任何想法吗?这将是 GWT 的一个很好的补充!

0 投票
2 回答
2373 浏览

javascript - 为什么 ES6 WeakMap 不可枚举?

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

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

如果 Flash VM 可以做到这一点,那么是什么阻止了浏览器做同样的事情呢?我读到它是“不确定的”,但这就是重点,对吗?

0 投票
8 回答
88088 浏览

javascript - What are the actual uses of ES6 WeakMap?

What are the actual uses of the WeakMap data structure introduced in ECMAScript 6?

Since a key of a weak map creates a strong reference to its corresponding value, ensuring that a value which has been inserted into a weak map will never disappear as long as its key is still alive, it can't be used for memo tables, caches or anything else that you would normally use weak references, maps with weak values, etc. for.

It seems to me that this:

...is just a roundabout way of saying this:

What concrete use cases am I missing?

0 投票
1 回答
1333 浏览

javascript - 使用 Wea​​kMaps 在 Javascript 中创建常规弱引用

我正在尝试用 Wea​​kMaps 做一件显而易见的事情:我想创建一个弱引用。特别是,我希望有一个事件监听器列表,而该列表不会影响监听器的生活。

所以我很高兴找到 WeakMaps,直到我看到它们只是为了满足一个(相当罕见的)用例而构建的,扩展了原本密封的对象。我想不出我什么时候想这样做,但我一直需要听众名单。

是否可以以我没想到的巧妙方式使用 Wea​​kMaps?

0 投票
3 回答
11506 浏览

javascript - 如何迭代弱图?

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

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

如果不是 .. Chrome 控制台如何做到这一点?

在此处输入图像描述