Javascript 在垃圾收集器删除类之前运行函数

Javascript 在垃圾收集器删除类之前运行函数,javascript,Javascript,我很确定我已经知道答案了,但我还是会问,所以我想在GC删除我的用例中的类实例时运行一个函数,我围绕document.createElement创建了一个包装类,它让我可以轻松控制新创建的元素,我想在类实例被删除后从DOM中删除元素,我知道我可以创建一个我已经拥有的删除函数,但是自动化它会很好 伪码 class BaseElement { element = document.createElement('div') constructor() { document.body.ap

我很确定我已经知道答案了,但我还是会问,所以我想在GC删除我的用例中的类实例时运行一个函数,我围绕
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)(或等效代码)编码到单个函数中,因此可以集中执行此操作。