2015-09-21 28 views
0

如果我有一个具有引用DOM元素的属性的对象,并且将事件委托给dom中的窗口小部件/字段,将使用jquery mainobj删除主包装器dom元素。 properties.elem。$ html_main.empty()。remove()从其他对象属性($ form,$ table,$ tab)中删除事件处理程序,还需要手动将每个属性(属性引用)分配给null GC。如果我为主父对象分配空值,它的所有子对象都将自动符合GC的条件。如果我将mainObj = null赋值,是否所有子对象,属性,properties.elem,properties.elem。$ form ....等都为空,并且可以通过GC进行收集。在取消mainObj之后,会不会有来自子对象的延迟DOM链接。如何从对象属性中删除dom元素/域的dom引用和事件委托

我的OBJ:

mainobj { 
 
    properties:{ 
 
     elem:{ 
 
      $form:'referencetoDOMForm', 
 
      $table: 'referncetoTableElement' 
 
      $tab: 'referencetoDivElement', 
 
      ... 
 
      }, 
 
     $html_main:'referencetomainDOM', 
 
     otherprops:{ ...}, 
 
     ... 
 
     } 
 
}

回答

0

如果上级对象不再可达的,因为你归零出变量引用它,并没有其他的代码有任何引用任何子对象,那么所有的垃圾收集都可以通过任何代码无法访问,即使它们包含DOM引用。在一般情况下,我避免存储DOM引用,而只是在某些函数开始时只需要使用DOM查询来检索它们。这样可以避免任何泄漏DOM节点的机会,因为您忘记了在某处放置其引用。