JavaScript垃圾收集和事件侦听器
我使用JavaScript OO模式,通过原型声明类:JavaScript垃圾收集和事件侦听器,javascript,jquery,garbage-collection,Javascript,Jquery,Garbage Collection,我使用JavaScript OO模式,通过原型声明类: function MyClass(id) { this.id = id; ... } MyClass.prototype.doStuff = function(json) { ... 我正在从其他类实例化我的类: new MyClass(); 在构建时,我的类通常绑定jQuery事件侦听器以执行操作: this.$header = $('#myHeaderId'); this.$header.on(
function MyClass(id) {
this.id = id;
...
}
MyClass.prototype.doStuff = function(json) {
...
我正在从其他类实例化我的类:
new MyClass();
在构建时,我的类通常绑定jQuery事件侦听器以执行操作:
this.$header = $('#myHeaderId');
this.$header.on('click', $.proxy(MyClass.prototype.doStuff, this));
我假设如果没有JS变量持有对我的对象的引用,那么只有事件绑定保持它的可访问性。如果将绑定了事件的HTML元素从DOM中删除(通过jQuery的#remove、#empty等),那么我的对象现在是不可访问的,并且将被GCed
这个假设正确吗?我想是的。不过,值得仔细检查jQuery源代码,以确保事件侦听器绑定到jQuery对象。你不能用它获得对你的对象的引用。如果没有变量引用,则对象将被垃圾收集。