在javascript中的ONDELETE对象事件

时间:2016-09-09 14:42:20

标签: javascript object destructor

我有一个模态对象,可以在创建DOM元素时创建它。 我想知道当用户在对象上调用“删除”时是否可以删除节点。类似的东西:

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;

2 个答案:

答案 0 :(得分:1)

delete不会触发onDeleteEvent,delete是一个运算符;

  

删除操作符从对象中删除属性。

你应该调用ondelete方法从DOM中删除元素。

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

JavaScript自动被垃圾收集;只有当Garbage Collectior决定运行并且该对象符合该条件时,才会回收该对象的内存。

删除操作符与直接释放内存无关(它只通过断开引用间接进行)。有关详细信息,请参阅memory management页面。

答案 1 :(得分:1)

你可以这样解决:
自行调用删除功能,而不是删除操作符
(我编辑了代码以进行一些清理。)



09

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();
 })