匿名对象在JavaScript中的生命周期

我有一个自主的基于socket.io的类对象,它接受一个服务器端套接字的数组,然后只是侦听客户端消息,并将响应发回到客户端。 为了运行这个function,我只需要通过调用如下函数来创build这个对象的一个​​实例:

function CreateNetworkGame(clients) { new NetworkManager(clients); } 

我知道,这不是一个好的做法,但它的工作原理和我想问的科学名称:没有variables保持参考对象的实例,为什么它不是垃圾收集,什么时候会(如果有的话) ?

一般来说,侦听套接字将使侦听器保持活跃状态​​。 监听器函数/闭包/对象可能包含对相关对象的引用,可能直到NetworkManager本身。

通过这种方式,处理networking事件实际所需的对象结构部分将保证处于活动状态,直到听众未注册为止。 但是,最高层的NetworkManager实例可能并不是其中的一部分,并且确实非常快速地收集垃圾信息。

该实例向另一个对象注册自己。 因此被引用,不会被垃圾收集。 这是使用事件侦听器的典型场景。