【发布时间】:2015-05-07 06:44:55
【问题描述】:
TypeScript 中有析构函数吗?如果没有,我怎样才能删除一个对象?
我尝试了destructor() 和~ClassName(),但没有成功。
【问题讨论】:
标签: javascript typescript destructor
TypeScript 中有析构函数吗?如果没有,我怎样才能删除一个对象?
我尝试了destructor() 和~ClassName(),但没有成功。
【问题讨论】:
标签: javascript typescript destructor
其实可以
class MyClass {
constructor(input1, input2){
this.in1 = input1;
this.in2 = input2;
}
}
let myObject = {};
try {
myObject = {
classHandler: new MyClass('1','2')
}
} catch (e) {
} finally {
delete myObject.classHandler
}
【讨论】:
delete 运算符的理解是,它只是删除了对该对象的引用,而垃圾收集仍然像往常一样不可预测地发生。
delete,经常有很多困惑,尤其是在 JavaScript 的新手中,我担心这个答案会延续下去。 delete 与垃圾回收无关。 在实践中,实现可预测资源清理的方法似乎是添加一个方法(例如destroy),然后在对象时调用它应用不再需要。
the object can be considered garbage 当然,我们总是这样,当变量超出范围时,显式删除或对它的最后引用不再指向该对象。但问题不在于这个,而在于对象何时被实际进行垃圾回收,而不是它何时成为垃圾回收的候选对象。
JavaScript 使用垃圾回收来自动删除不再引用的对象。没有析构函数或终结器的概念。
您无法观察到垃圾收集器何时删除对象,也无法预测。
【讨论】:
obj.destruct()。