删除一个类的实例?

时间:2013-06-21 20:06:40

标签: javascript

我有一个像这样创建的类:

function T() {
    this.run = function() {
        if (typeof this.i === 'undefined')
            this.i = 0;
        if (this.i > 10) {
            // Destroy this instance
        }
        else {
            var t = this;
            this.i++;
            setTimeout( function() {
                t.run();
            }, 1000);
        }
    }
}

然后我像var x = new T();

一样初始化它

如果达到10次迭代,我不知道如何从内部破坏这个实例。

此外,我不确定如何在外部销毁它,以防我想在它达到10之前停止它。

2 个答案:

答案 0 :(得分:23)

要删除实例,请在JavaScript中删除指向它的所有引用,以便垃圾收集器可以回收它。

这意味着您必须知道包含这些引用的变量。

如果您刚将其分配给变量x,则可以执行

x = null;

x = undefined;

delete window.x;

但是最后一个,正如Ian所预先确定的那样,只有在将x定义为window的显式属性时才能工作。

答案 1 :(得分:3)

不相同的功能是不同的。删除不起作用。 Class 是系统修改。

class SAFunc {
  method1(){
    console.log("1");
  }
  method2(){
    console.log("2");
  }
}
let func  = new SAFunc();
func['method2']()

尝试:

  • delete window['func'] - 无法正常工作
  • delete eval['func'] - 无法正常工作
  • delete window['SAFunc'] - 无法正常工作
  • ...
  • ...

功能 - 命令工作删除

method1 = function(){
  console.log("func1");
}
function method2() {
  console.log("func2");
}
var SAFunc = { method3: function() { console.log("func3"); } }

进行测试...尝试:

  • delete window['method1']
  • delete window['method2']
  • delete SAFunc['method3']

好玩!我喜欢编程

加入我们;)