7

オブジェクトにアクティブな Object.observe を設定すると、オブジェクトがガベージ コレクションされるのを防ぐことができますか? 最初に Object.unobserve を呼び出して、ガベージ コレクションを許可する必要がありますか? それとも、オブジェクトを GC すると、アクティブなオブザーバーがすべて削除されますか?

4

1 に答える 1

7

オブジェクトを観察しても、オブジェクトは生き続けません。オブジェクトが死ぬと、そのオブザーバーはそれ以上イベントを受け取れなくなります。少なくとも、これまでのところ唯一の V8 の実装ではそうです。この機能がいつか標準化された場合、他の実装にも同様に適用されると想定するのはおそらく安全です。

ただし、観察は、アクティブなオブザーバーを有効に保ち、各オブザーバー関数に関連付けられた内部のヒープ割り当てデータ構造を維持します。実際、この追加データは、関数自体が停止した場合にのみ停止します。

于 2014-08-15T18:42:41.997 に答える