我曾经使用new
关键字创建我的JavaScript“类”的实例,并调用构造函数,如:new myStuff.DoSomething();
,以获取它的实例。有时在需要时我会给实例提供一个类似的参考:var myObj = new myStuff.DoSomething();
我开始考虑内存管理:当它们不再使用时,JS是否清理没有引用的对象? - 与清理引用的方法相同。那么杀死对象中的所有事件处理程序呢,它们仍然存在吗?
示例:例如,如果我使用new
关键字创建一个可拖动窗口,并且没有对该对象的引用,然后附加事件处理程序等等。然后我决定从DOM中删除窗口。如何确保删除实际对象?
答案 0 :(得分:2)
当不再使用它们时,JS是否清理没有引用的对象?
是。 JavaScript是一种garbage collected语言。
那么杀死对象中的所有事件处理程序呢,它们还能继续存在吗?
这取决于,因为我们现在谈论的是DOM,而不仅仅是JS作为一种语言。某些DOM实现(例如在IE的旧版本中)是notorious for leaking memory in this way。其他浏览器/ DOM实现可能没有这样的错误。