我正在尝试使用WeakMaps做显而易见的事情:我想创建一个弱引用。特别是,我希望有一个事件侦听器列表,而该列表不会影响侦听器的寿命。
因此,我对找到WeakMaps感到非常兴奋,直到我看到它们仅是为满足一个(相当罕见的)用例而构建的,才能扩展原本是密封的对象。我想什么时候都想不到,但我一直都需要听众列表。
是否有可能以我没有想到的巧妙方式使用WeakMaps?
最佳答案
不,不可能使用WeakMaps创建弱引用。 WeakMap是不可迭代的,要使用它们,您始终需要密钥。这是一个经过深思熟虑的决定(也是here),因此垃圾回收不会影响程序的语义,而这正是您想要的。
ES8可能附带了真正的弱引用,有关草稿,请参见here和there。
关于javascript - 使用WeakMaps在Javascript中创建常规的弱引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29436056/