7

对一个对象有一个活动的 Object.observe 会阻止它被垃圾收集吗?您是否需要先调用 Object.unobserve 才能对其进行垃圾收集?还是 GCing 一个对象会删除它所有的活动观察者?

4

1 回答 1

7

观察一个物体并不能让它保持活力。一旦对象死亡,它的观察者就不会再收到任何事件。至少在 V8 的实现中是这样的,这是迄今为止唯一的一个。如果有一天这个特性成为标准,假设它也适用于其他实现可能是安全的。

然而,观察保持其活跃的观察者活着,加上一些与每个观察者函数相关的内部堆分配数据结构。事实上,这些额外的数据只会在函数本身也死亡时才会死亡,即使它早已停止观察任何东西。

于 2014-08-15T18:42:41.997 回答