javascript - ECMAScript 6 类析构函数

标签 javascript ecmascript-6

我知道 ECMAScript 6 有构造函数,但 ECMAScript 6 有析构函数吗?

例如,如果我在构造函数中将我对象的一些方法注册为事件监听器,我想在我的对象被删除时删除它们。

一个解决方案是为每个需要这种行为的类创建一个析构函数方法并手动调用它。这将删除对事件处理程序的引用,因此我的对象将真正准备好进行垃圾回收。否则它会因为这些方法而留在内存中。

但我希望 ECMAScript 6 是否有一些原生的东西可以在对象被垃圾回收之前调用。

如果没有这样的机制,此类问题的模式/约定是什么?

最佳答案

Is there such a thing as destructors for ECMAScript 6?

没有。 EcmaScript 6 根本没有指定任何垃圾回收语义[1],因此也没有什么类似于“销毁”。

If I register some of my object's methods as event listeners in the constructor, I want to remove them when my object is deleted

析构函数在这里甚至帮不了你。仍然引用您的对象的是事件监听器本身,因此在取消注册之前无法对其进行垃圾回收。
您实际上正在寻找的是一种注册监听器而不将它们标记为事件根对象的方法。 (向您本地的事件源制造商咨询此类功能)。

1): 好吧,有一个以 WeakMap 的规范开始的和 WeakSet对象。然而,真正的弱引用仍在酝酿之中[1] [2] .

关于javascript - ECMAScript 6 类析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333017/

相关文章:

javascript - Ajax发送大数据MVC4

javascript - 如何反转字符串中的单词而不是反转整个字符串?

javascript - 从数组中提取值并将它们转换为字符串的最佳方法(允许 ES6)是什么?

javascript - 如何将 Node 模块的 require 转换为 es6 import/export

javascript - 我无法用纯 JavaScript 获得元素的准确高度

javascript - 在 Wordpress 网站上执行自定义 css 后 JS 无法正常工作

javascript - 两种方法使用appendChild,但结果不同

javascript - 错误 : How to serialize data from getStaticProps : Next. js

javascript - 来自变量 : why must identifier be different? 的 JS 默认参数值

javascript - 在 JavaScript onClick 事件处理程序中转义双引号