2

Javascript では、アイテムへの参照がページに存在しない場合、アイテムがガベージ コレクションされることを理解しています。

var obj = {
   arr: [1,2,3]
};
var arr = obj.arr;
obj = "hello";

上記のコードでは、最初の obj オブジェクトへの参照を置き換えました。そのオブジェクトへの参照はもうありません。ただし、そのオブジェクトにあった配列への参照があります。オブジェクトは arr が参照されなくなるまで保持されますか? それともガベージコレクションできますか?

4

1 に答える 1

4

「obj」の値だったオブジェクトは回収できますが、「arr」の値であるオブジェクト(配列)とは別のオブジェクトです。そいつは集められない。

オブジェクトは、そのプロパティによって参照されるオブジェクトとは別に収集できます。

(厳密に言えば、これはすべてコレクターの詳細に依存しますが、プロパティ値はそれを含むオブジェクトの一部ではないため、それを行うコレクターを知って本当に驚かれることでしょう。)

于 2013-02-12T20:21:11.583 に答える