我有一个像这样创建的类:
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之前停止它。
答案 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']
好玩!我喜欢编程
加入我们;)