JavaScript,无引用的对象实例

JavaScript,无引用的对象实例,javascript,object,memory-management,reference,instance,Javascript,Object,Memory Management,Reference,Instance,我曾经使用new关键字创建JavaScript“类”的实例,并调用构造函数,如:new myStuff.DoSomething()以获取它的实例。有时需要时,我会给实例一个引用,比如:var myObj=new myStuff.DoSomething() 我开始思考内存管理:当不再使用对象时,JS是否会清理没有引用的对象同样的方法,它会清理那些引用。那么一个被杀死的对象中的所有事件处理程序呢,它们还存在吗 示例:例如,如果我使用new关键字创建一个可拖动的窗口,并且不引用对象,然后附加事件处理程

我曾经使用
new
关键字创建JavaScript“类”的实例,并调用构造函数,如:
new myStuff.DoSomething()以获取它的实例。有时需要时,我会给实例一个引用,比如:
var myObj=new myStuff.DoSomething()

我开始思考内存管理:当不再使用对象时,JS是否会清理没有引用的对象同样的方法,它会清理那些引用。那么一个被杀死的对象中的所有事件处理程序呢,它们还存在吗

示例:例如,如果我使用
new
关键字创建一个可拖动的窗口,并且不引用对象,然后附加事件处理程序等等。然后我决定从DOM中删除窗口。如何确保实际对象也被删除

当对象不再使用时,JS是否会清理没有引用的对象

对。JavaScript是一种语言

那么一个被杀死的对象中的所有事件处理程序呢,它们还存在吗


这要视情况而定,因为我们现在讨论的是DOM,而不仅仅是JS作为一种语言。某些DOM实现(例如在旧版本的IE中)是可用的。其他浏览器/DOM实现可能没有此类错误。

在“如何确保实际对象也被删除”中,您所说的“实际对象”是什么意思?对于对象,我是指使用新关键字创建的实例,什么是“实际对象”。在本例中,创建了DOM节点,但它自身的对象“this”是我的意思;如果你能在你的例子中加入一些代码来澄清你的问题,这将是非常有帮助的。几乎可以肯定的是,答案是“是的,对象被清理了。”我没有任何代码示例,这只是一个一般的想法。我知道在其他一些语言中,或者在其他情况下,当您将实际实例保存到变量作为引用时,如果不再使用它,则最好将其设置为null。但是在这些情况下,当你创建一个未知数量的没有引用的实例时,当然,据我所知,没有办法将其设置为null。一个实例不能是
null
,只能是一个引用。如果没有对实例的引用,则没有任何内容可设置为
null