在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 Elements相关的一些内存泄漏,即使在它们已经消失了,Perl方面也没有更多的引用。因此,我正在寻找方法来确定何时销毁JavaScript Elements,或者强制JavaScript清理对象的方法。
如果在纯JavaScript中无法做到这一点,则可以使用XPConnect / XPCOM或任何其他Mozilla特定技术的解决方案。
答案 0 :(得分:3)
XUL :: Gui是否允许您在SpiderMonkey API层与浏览器进行交互?如果是这样,https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JSClass.finalize可能对您有用。否则,你可能会陷入困境,因为Matthew Flaschen上面说过,在Javascript中无法做到这一点。
答案 1 :(得分:1)
纯JavaScript中没有相应的机制。