2016-09-09 5 views
-1

DOM要素を作成する際にDOM要素を作成するモーダルオブジェクトがあります。 私はオブジェクトが削除されたときにノードを削除できるかどうかを知りたいです。次のようなものがあります。JavaScriptのONDELETEオブジェクトイベント

var modal = function (options) { 
    var domHolder = null; 

    function build() { 
     domHolder = document.createElement("div"); 
     //construct a modal window inside the element... 
    }; 

    this.ondelete = function() { 
     domHolder.parentNode.removeChild(domHolder); 
    } 

    build(); 
}; 

//destruct the object and remove the nodes 
var myModal = new modal(); 
delete myModal; 
+4

javascriptにはデストラクタがありません。 – jcubic

+0

WeakMapはあなたを助けますか? –

+0

すべての例@JanDvorak ?? – CarlosCarucce

答えて

1

deleteは、onDeleteEventをトリガーしません。deleteは演算子です。

削除演算子は、オブジェクトからプロパティを削除します。

DOMから要素を削除するには、ondeleteメソッドを呼び出します。

var myModal = new modal(); 
myModal.ondelete() ; 

JavaScriptは自動的にガベージコレクトされます。ガベージコレクタが実行を決定し、そのオブジェクトがそれに適格である場合にのみ、オブジェクトのメモリは再利用されます。

削除演算子は、メモリを直接解放することとは関係ありません(破棄する参照を介して間接的にのみ行います)。詳細については、memory managementページを参照してください)。

+0

_削除演算子はメモリを直接解放することとはまったく関係ありません。参照ありがとう – CarlosCarucce

1

あなたはこのようにそれを解決することができます:(。私はいくつかのクリーンアップを行うためのコードを編集した)
コール削除機能を自分の代わりに、
はdelete演算子

var modal = function (options) { 
 
    var domHolder = null; 
 

 
    function build() { 
 
     domHolder = document.createElement("div"); 
 
     domHolder.innerHTML = "yes"; 
 
     document.getElementById("test").appendChild(domHolder); 
 
    }; 
 

 
    this.delete = function() { 
 
     domHolder.parentNode.removeChild(domHolder); 
 
     delete domHolder; 
 
     // delete ... other objectsthat can be released, ... 
 
     // ... so that the instance can be garbage collected 
 
    } 
 

 
    build(); 
 
}; 
 

 
//destruct the object and remove the nodes 
 
var myModal = new modal(); 
 
document.getElementById("clear").addEventListener("click", function(){ 
 
    myModal.delete(); 
 
})
<div id="test"> 
 
</div> 
 
<button id="clear">delete</button>

+1

良い例。すべての回答/参考文献によれば、それを手動で '破壊する'必要があります。 – CarlosCarucce

関連する問題