目前我的应用程序还没有遇到内存泄漏的问题,但我担心将来可能会出现问题。我想知道像这样做是否可行:
SomeClass.prototype.someMethod= function() {
var that= this
this.$div2.click(function() {
that.someMethod2();
});
}
假设this.$div2被附加到另一个div this.$div1上。如果我调用
this.$div1.remove();
如果我稍后失去了对于我的 SomeClass 实例的引用,那么这个 SomeClass 实例会被垃圾回收吗?那么这个 HTML 元素 this.$div2 呢?因为它被附加到了 this.$div1 上,所以它不会在 DOM 中。
我之所以问这个问题,是因为在 this.$div2 中的事件处理程序可能会保留对 HTML 元素 this.$div2 的引用,并且由于变量“that”的闭包,它也会保留对 SomeClass 实例的引用。
所以我应该关心像这样正确删除所有事件和 HTML 元素吗?还是仅仅删除“根”元素(即 this.$div1)就可以解决问题?