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这次是 global ( window) 的成员,因此可以从中删除。

于 2013-01-24T10:01:27.757 回答