javascript 中的 ONDELETE 对象事件

ONDELETE object event in javascript

我有一个模态对象,它在创建时会创建 DOM 个元素。 我想知道每当用户在对象上调用 'delete' 时是否可以删除节点。类似于:

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;

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

The delete operator removes a property from an object.

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

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

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

delete 运算符与直接释放内存无关(它只是通过中断引用间接执行)。有关详细信息,请参阅 memory management 页面。

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

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>