对象上有一个活跃的 Object.observe 会阻止它被垃圾收集吗?你需要先调用 Object.unobserve 让它被垃圾回收吗?还是对对象进行 GC 会移除其所有活跃的观察者?
最佳答案
观察一个对象并不能使它保持活力。一旦对象死亡,它的观察者就不会再收到任何事件。至少在 V8 的实现中是这样,这是迄今为止唯一的一个。如果有一天此功能成为标准,可以安全地假设它也适用于其他实现。
但是,观察会使其事件的观察者保持事件状态,以及与每个观察者函数关联的一些内部堆分配数据结构。事实上,只有当函数本身也死亡时,这些额外的数据才会死亡,即使它早已停止观察任何东西。
关于javascript - Object.observe/unobserve 如何与垃圾回收交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314352/