有没有可能在javascript中创建一个“弱引用”?

有没有什么办法在JavaScript中创建另一个对象的“弱引用”? 这里是维基页面,描述了什么是弱引用。 这是另一篇用Java描述它们的文章。 任何人都可以想出一种方法来在JavaScript中实现这种行为?


JavaScript中没有对弱返回的语言支持。 您可以使用手动引用计数来滚动自己,但不会特别顺利。 你不能创建一个代理包装对象,因为在JavaScript中,对象永远不知道它们什么时候被垃圾收集。

因此,您的'弱引用'通过简单的查找成为一个关键(例如整数),带有add-reference和remove-reference方法,并且当不再有手动跟踪引用时,则可以删除条目,留下将来的查找该键返回null。

这不是一个虚弱的参考,但它可以解决一些相同的问题。 它通常在复杂的Web应用程序中完成,以防止在DOM节点或事件处理程序与与其关联的对象(如闭包)之间存在引用循环时,浏览器(通常是IE,尤其是旧版本)的内存泄漏。 在这些情况下,甚至可能不需要完整的参考计数方案。


在NodeJS上运行JS时,可以考虑https://github.com/TooTallNate/node-weak。


仅供参考; JavaScript没有它,但ActionScript 3(也是ECMAScript)。 查看Dictionary的构造函数参数。

链接地址: http://www.djcxy.com/p/72767.html

上一篇: Is it possible to create a "weak reference" in javascript?

下一篇: PyObjc autorelease pool