在 JavaScript 垃圾收集器清理元素之前,是否有任何方法被调用或事件被调度?
在 Perl 我会写:
package MyObj;
sub new {bless {}}
sub DESTROY {print "cleaning up @_\n"}
然后:
{
my $obj = MyObj->new;
# do something with obj
} # scope ends, and assuming there are no external references to $obj,
# the DESTROY method will be called before the object's memory is freed
我的目标平台是 Firefox(我不需要支持其他浏览器),所以如果只有 Firefox 特定的方法可以做到这一点,那很好。
还有一点背景知识:我正在编写 Perl 模块XUL::Gui,它充当 Perl 和 Firefox 之间的桥梁,我目前正在努力解决一些与 DOM 元素相关的内存泄漏问题,即使它们已经消失了Perl 端不再有引用。因此,我正在寻找方法来确定 JavaScript 元素何时被销毁,或者强制 JavaScript 清理对象。
如果在纯 JavaScript 中无法做到这一点,则可以使用 XPConnect/XPCOM 或任何其他 Mozilla 特定技术的解决方案。