0

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

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

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

4

1 回答 1

2

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

是的。JavaScript 是一种垃圾收集语言。

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

这取决于,因为我们现在谈论的是 DOM,而不仅仅是 JS 作为一种语言。某些 DOM 实现(例如在旧版本的 IE 中)以这种方式泄漏内存而臭名昭著。其他浏览器/DOM 实现可能没有此类错误。

于 2012-04-28T14:28:28.340 回答