将子对象的父对象添加到侦听器会导致 Node.js 中的保留循环吗?

Will adding the parent object of a child object to the listeners lead to a retain cycle in Node.js?

我不太熟悉 Node.js 中更多来自 Objective-C/iOS 的保留循环,但我写了一些代码,希望 不会 导致一个保留周期。我不确定 V8 处理垃圾收集的智能程度如何,或者我在这方面应该有多聪明!

在我的示例中,我创建了一个对象,该对象应该处理建立数据连接并将该数据反馈给父对象。为此,我使用 EventEmitter .on 函数来注册父对象函数。处理完所有数据后,父对象将被释放,但之后这会在父对象和子对象之间创建一个保留循环吗? 示例代码

// Create the SonarData with the necessary information
this.sonardata = new SonarData( this.key, this.size )

// Hook events
.on( 'error', this.handleError.bind( this ) )
.on( 'done', this.handleDone.bind( this ) )
.on( 'data', this.handleData.bind( this ) );

当父对象被释放时,如果没有其他对子对象的引用并且子对象上没有活动的消息处理程序,那么子对象将被垃圾回收就好了。 Javascript 垃圾收集器没有保留周期问题。它们根据代码是否仍然可以被任何其他活动代码访问来工作。

因此,两个相互引用但其他代码都无法访问的对象将被成功垃圾回收。