0

私が解決しようとしているのは、無効化が常に必要かどうかです。Chromeでいくつかの問題が発生しているため。このコードがあるとします。

function MyClass() {}

MyClass.prototype.MyFunction = function() {
    this.data = "foo";
}
var c = new MyClass();
c.MyFunction();

その関数が呼び出されたら、GC を許可する必要がありますが、関数の最後にはthis.data = null. これもスタンダードにすべきか。

4

1 に答える 1

1

あなたのコードは機能しません。最初にクラスのインスタンスを作成する必要があります。

var c = new MyClass();
c.MyFunction();

MyFunctionインスタンス関数だからです。

それ以外の場合は、オブジェクト メンバーを削除するために使用されるdelete演算子 (参照と詳細な分析) もあります (ただし、オブジェクト自体は削除されません)。したがって、オブジェクトを参照する方法がなくなった場合、オブジェクトはガベージ コレクションされる可能性があります。

c = undefined;

Javascript がこのオブジェクト インスタンスをガベージ コレクションし、それによって消費されたメモリ リソースを解放するように説得する必要があります。

オブジェクト インスタンスが次のようにインスタンス化されている場合は異なります。

c = new MyClass();
c.MyFunction();
delete c; // success

は、c今回はグローバル ( ) のメンバーであり、グローバル ( window) から削除できるためです。

于 2013-01-24T10:01:27.757 に答える