2012-04-28 75 views
0

我用new关键字创建我的JavaScript“类”的实例,并调用构造函数如:new myStuff.DoSomething();以获取它的一个实例。有时候在需要的时候,我给这个实例一个参考,例如:var myObj = new myStuff.DoSomething();JavaScript,没有参考的对象实例

我来思考内存管理:当JS没有被使用时,JS是否清理没有引用的对象? - 用相同的方式清理那些带有引用的文件。那么在一个被杀死的对象中的所有事件处理程序呢,他们还活着吗?

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

+0

你是什么意思_“实际的对象”_在_“我怎样才能确保实际的对象也被删除?”_什么“实际的对象?” – 2012-04-28 14:33:23

+0

对于我的意思是,使用new关键字创建的实例。在这个例子中,创建了DOM节点,但它自己的“this”对象就是我的意思;该实例。 – user1121487 2012-04-28 14:36:59

+0

如果你可以在你的例子中包含一些代码来明确你的要求,这将是有帮助的。几乎可以肯定的答案是“是的,物体被清理干净。” – 2012-04-28 14:43:50

回答

2

当JS没有被使用时,JS是否清理没有引用的对象?

是。 JavaScript是一种garbage collected语言。

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

这取决于,因为我们现在谈论的是DOM,而不仅仅是JS作为一种语言。某些DOM实现(例如在较旧版本的IE中)是notorious for leaking memory in this way。其他浏览器/ DOM实现可能没有这样的错误。