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とFirefoxの間のブリッジとして機能するPerlモジュールXUL :: Guiを書いています、そして私は現在、それらがなくなった後でも、永久に立ち往生している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 に答える