标签: javascript weak-references ecmascript-6 ecmascript-harmony weakmap
我正在尝试使用WeakMaps进行明显的事情:我想创建一个弱引用。特别是,我想要一个没有该列表的事件监听器列表,影响监听器的生命。
所以我很高兴找到WeakMaps,直到我看到它们只是为了满足一个(相当罕见的)用例,扩展了其他密封的对象。我无法想到什么时候我想这样做,但我一直都需要听众名单。
这是否可以以一些我没想过的聪明方式使用WeakMaps?
答案 0 :(得分:15)
不,不可能使用WeakMaps来创建弱引用。 WeakMaps不可迭代,使用它们总是需要密钥。这是一个深思熟虑的决定(也是here),因此垃圾收集不会影响程序的语义 - 这正是你想要的。
ES8可能附带真正的弱引用,有关草稿的信息,请参阅here和there。