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

Javascript Object.observe/unobserve如何与垃圾收集交互?,javascript,garbage-collection,ecmascript-harmony,object.observe,Javascript,Garbage Collection,Ecmascript Harmony,Object.observe,在一个对象上有一个活动的Object.observe是否可以防止它被垃圾收集?是否需要首先调用Object.unobserve以允许对其进行垃圾收集?或者GCing对象是否会删除其所有活动的观察者?观察对象并不能使其保持活动状态。一旦对象死亡,它的观察者将不再接收任何事件。至少在V8的实现中是这样,这是迄今为止唯一的一个实现。如果有一天这个特性成为标准,那么可以安全地假设它也适用于其他实现 然而,观察使其活动的观察者保持活动状态,加上与每个观察者函数相关联的一些内部、堆分配的数据结构。事实上,这

在一个对象上有一个活动的Object.observe是否可以防止它被垃圾收集?是否需要首先调用Object.unobserve以允许对其进行垃圾收集?或者GCing对象是否会删除其所有活动的观察者?

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


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

我明白了。那么,在删除对被观察对象的引用之前,是否可以安全地说您必须对您创建的所有观察者进行自己的簿记,并单独调用Object.unobserve?@alexp,这应该是不必要的。仅观察死物的函数不再是我上面所说的“活动”函数。事实上,试图手动管理生命周期很容易出错,因此它引入的额外簿记数据很有可能让东西活得更长。