2015-09-21 62 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節點的機會,因爲您忘記了在某處放置其引用。