Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript垃圾收集和事件侦听器_Javascript_Jquery_Garbage Collection - Fatal编程技术网

JavaScript垃圾收集和事件侦听器

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(

我使用JavaScript OO模式,通过原型声明类:

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对象。你不能用它获得对你的对象的引用。如果没有变量引用,则对象将被垃圾收集。