Javascript 在垃圾收集器删除类之前运行函数
我很确定我已经知道答案了,但我还是会问,所以我想在GC删除我的用例中的类实例时运行一个函数,我围绕Javascript 在垃圾收集器删除类之前运行函数,javascript,Javascript,我很确定我已经知道答案了,但我还是会问,所以我想在GC删除我的用例中的类实例时运行一个函数,我围绕document.createElement创建了一个包装类,它让我可以轻松控制新创建的元素,我想在类实例被删除后从DOM中删除元素,我知道我可以创建一个我已经拥有的删除函数,但是自动化它会很好 伪码 class BaseElement { element = document.createElement('div') constructor() { document.body.ap
document.createElement
创建了一个包装类,它让我可以轻松控制新创建的元素,我想在类实例被删除后从DOM中删除元素,我知道我可以创建一个我已经拥有的删除函数,但是自动化它会很好
伪码
class BaseElement {
element = document.createElement('div')
constructor() {
document.body.appendChild(this.element)
}
// if its possible then im sure that its not this easy and would
// involve changing some prototype prop or something like that.
// this is just something to pass the annoying qualty filter.
beforGC() {
this.element.remove()
}
}
正如您所怀疑的那样,不,JavaScript不提供任何类型的“终结器”(一个在对象被GC处理之前运行的函数)
你最好的办法就是让释放对象的任何东西也告诉它清理。我怀疑有类似的东西,我想你可以将功能包装在一个小模块中,因此你可以调用类似于
myModule.remove(someObj)的东西
它将运行someObj.beforeGC
,然后删除对要进行垃圾收集的对象的引用。@VLAZ-不需要太复杂,有一个destroy
方法或类似方法直接在对象上执行这类操作并不少见。我的观点是,如果要从多个位置执行此操作,您还可以包装obj.destroy();储存。移除(obj)将>(或等效代码)编码到单个函数中,因此可以集中执行此操作。