如果我这样监听obj
上的事件:
obj.addEventListener("click", listener)
假设仅从另一个对象(obj
)引用obj2.obj = obj
,如果在程序执行的某个时刻删除了该引用(obj2.obj = null
),则{{ 1}}收集到垃圾,还是需要先致电obj
?我对JS VM中的GC没有很深入的了解,所以我不确定侦听器是否引入了某种循环依赖关系,这些循环依赖关系可能会使obj.removeEventListener("click", listener)
永远存活。它是否实际上取决于obj
或obj
的其他属性?我知道它会变得更加复杂,例如listener
,甚至更糟糕的listener.bind(this)
...