在JavaScript中是否可能创建“弱引用”?

104

仅供参考:JavaScript没有这个功能,但ActionScript 3(也是ECMAScript)有。请查看Dictionary的构造函数参数 - Amir
4
弱引用正在讨论是否要加入 ES6 中,敬请关注。 - Ryan Smith
2
官方规范维基/讨论位于http://wiki.ecmascript.org/doku.php?id=strawman:weak_refs,目前“最后修改时间:2013/02/02 22:25” 一些其他规范讨论在https://esdiscuss.org/topic/what-is-the-status-of-weak-references,目前的最后一篇帖子为“Sun Mar 3 11:56:05 PST 2013” - Destiny Architect
在大多数情况下,WRs是试图解决Lapsed Listener Problem的一种尝试,这里进行了讨论:[https://dev59.com/T6Hia4cB1Zd3GeqPTGvQ]。如果那个问题有一个好的答案,我认为就不需要WRs了。 - James
@supercat 我已经发布了对于“过期的监听器问题”的回答(https://dev59.com/T6Hia4cB1Zd3GeqPTGvQ#51911345)。 - James
11个回答

-6

http://www.jibbering.com/faq/faq_notes/closures.html

ECMAScript使用自动垃圾回收。规范没有定义细节,而是让实现者们解决这个问题,有些实现可能会把垃圾回收操作的优先级降至最低。但是,总体思路是:如果一个对象变得不可引用(即没有剩余的引用可以被执行代码访问),那么它就可以进行垃圾回收,并在将来的某个时间被销毁并释放任何资源以便系统重复利用。

当退出执行上下文时,通常会出现这种情况。作用域链结构、激活/变量对象以及执行上下文中创建的任何对象,包括函数对象,都将不再可访问,因此将变得可以进行垃圾回收。

这意味着,不存在弱引用,只有不再可用的引用。


10
避免引用循环不是使用弱引用的唯一原因。它们非常方便用于对象实例池/缓存等。 - fluffy
弱引用的定义不是问题。同时,我也同意上面的评论。 - Yuri Yaryshev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接