【问题标题】:how to create a destructor in es6如何在 es6 中创建析构函数
【发布时间】:2020-03-06 03:43:09
【问题描述】:

例如:

function a() {
    this.heartbeat = setInterval(()=>{}, 10000)
}

var b = new a()
delete b //The heartbeat still seems to be working

我想在我的对象被删除时移除心跳。

【问题讨论】:

  • 使用clearInterval - 哦,对,你想检测delete - 我认为你需要像clearInterval(b.heartbeat); delete b; 一样处理它 - 在javascript中没有相当于c++的“析构函数”我知道-另外,根据您的示例调用delete b 不会删除任何内容... delete 删除对象的属性,b 不是对象的属性-console.log(delete b) 输出false 所以它“失败了"
  • 了解删除... JavaScript 删除操作符从对象中删除一个属性; 如果不再保留对同一属性的引用,它最终会自动释放。 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ...事实上,如果您处于严格模式,您发布的代码将抛出错误

标签: javascript node.js object ecmascript-6


【解决方案1】:

由于 Javascript 中没有类的“内置”析构函数方法,您可以自己实现一个(我相信还有更多选择,但这是我能想到的唯一方法):

class A {
  heartbeat = setInterval(() => console.log('hearbeat'), 1000);

  destory() {
    clearInterval(this.heartbeat);
  }
}

let a = new A();

setTimeout(() => a.destory(), 5000);

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2017-04-20
    • 2020-04-01
    • 2011-10-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多