使用WeakMaps在Javascript中创建常规弱引用

Mal*_*lio 16 javascript weak-references ecmascript-harmony weakmap ecmascript-6

我试图用WeakMaps 做明显的事情:我想创建一个弱引用.特别是,我想要一个没有该列表影响监听器生命的事件监听器列表.

所以我很高兴能找到WeakMaps,直到我看到它们只是为了满足一个(相当罕见的)用例,扩展其他密封的对象.当我想要这样做时,我想不到,但我一直都需要听众列表.

这有可能以一些我没有想到的聪明方式使用WeakMaps吗?

Ber*_*rgi 15

不,不可能使用WeakMaps来创建弱引用.WeakMaps不可迭代,使用它们总是需要密钥.这是一个深思熟虑的决定(也在这里),因此垃圾收集不会影响程序的语义 - 这正是你想要的.

ES8可能带来真正的弱引用,请参阅此处那里的草稿.