JavaScript中有没有办法创建一个;弱引用“;到另一个物体?下面是wiki页面,描述了弱引用是什么。下面是另一篇用Java描述它们的文章。有人能想出一种在JavaScript中实现这种行为的方法吗
更新:自2020年7月以来,一些实现(Chrome、Edge、Firefox和Node.js)已经支持WeakRefs提案中定义的WeakRefs,即;第三阶段草案;截至2020年12月16日。
JavaScript中没有对weakrefs的语言支持。您可以使用手动引用计数来滚动自己的引用,但不是特别平滑。您不能创建代理包装器对象,因为在JavaScript中,对象永远不知道何时将被垃圾收集
因此,您的“弱引用”在一个简单的查找中成为一个键(例如整数),使用add-reference和remove-reference方法,并且当不再有手动跟踪的引用时,条目可以被删除,使以后对该键的查找返回null
这不是一个真正的弱点,但它可以解决一些同样的问题。当DOM节点或事件处理程序与相关对象(如闭包)之间存在引用循环时,通常在复杂的web应用程序中执行此操作,以防止浏览器(通常是IE,尤其是旧版本)内存泄漏。在这些情况下,甚至可能不需要完整的参考计数方案