我的应用程序还没有遇到内存泄漏,但我担心将来可能出现问题。我想知道是否做这样的事情:
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.$div2 不会在 DOM 内,因为它附加到 this.$div1。
我问这个是因为 this.$div2 中的事件处理程序可能会保留对 HTML 元素 this.$div2 的引用,并且由于变量“that”,还会通过闭包保留对 SomeClass 实例的引用。
那么我应该关心正确删除所有事件和这样的 HTML 元素吗?或者只是删除“根”元素(this.$div1)就可以解决问题?