Object.observe / unobserve如何与垃圾收集进行交互?

时间:2014-08-14 17:46:26

标签: javascript garbage-collection ecmascript-harmony object.observe

在对象上有一个活动的Object.observe是否会阻止它被垃圾回收?您是否需要先调用Object.unobserve以允许它被垃圾回收?或者GCing一个对象是否删除了所有活动的观察者?

1 个答案:

答案 0 :(得分:6)

观察对象并不能保持活着。一旦对象死亡,其观察者将不再接收任何事件。至少在V8的实现中是这样,这是迄今为止唯一的实现。如果这个功能有一天成为标准,那么可以安全地假设它也适用于其他实现。

但是,观察使其活动观察者保持活动状态,以及与每个观察者函数关联的一些内部堆分配数据结构。事实上,这些额外的数据只会在函数本身也已经死亡时死亡,即使它已经很久没有观察到任何东西了。