2

在 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 特定技术的解决方案。

4

2 回答 2

3

XUL::Gui 是否允许您在 SpiderMonkey API 层与浏览器交互?如果是这样,https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JSClass.finalize可能对您有用。否则,您可能会被卡住,因为正如上面 Matthew Flaschen 所说,在 Javascript 中无法做到这一点。

于 2010-05-19T21:44:51.563 回答
1

在纯 JavaScript 中没有这样的机制。

于 2010-05-19T21:39:15.120 回答