我什么时候应该使用destroy方法?

时间:2011-06-29 13:57:06

标签: javascript destructor

我做了一个small javascript framework,旨在在原型对象模型中添加一些有用的东西(超级方法调用,继承,自动初始化......)。

在这个框架中,会自动调用一些对象方法,比如“init”来构造对象,并在窗口卸载时“销毁”。

我对这种破坏方法有两个问题:

  • 这种方法用于什么?

我认为它应该对DOM对象进行一些清理(解除绑定事件),但还有其他清理吗?

  • 是否应该在另一个事件上调用此方法?是否有可能检测到对象何时被销毁并在此时调用此方法?

如果有人对此框架感兴趣,我将其发布在gitHub上,但是现在没有文档: - /: https://github.com/LeMisterV/EasyPrototype

3 个答案:

答案 0 :(得分:3)

一个更好的问题,为什么你需要销毁任何东西?如果窗口正在卸载,一切都将代表您进行垃圾收集。

答案 1 :(得分:2)

某些版本的Internet Explorer卡在JavaScript和DOM之间的循环引用上,因为它们是单独进行垃圾回收的。当您开始向所有事件添加事件处理程序时,这往往会成为一个问题。

您应该在框架中执行的操作是每次添加事件时都要跟踪,以便您可以浏览该事件数组并在卸载时销毁每个事件。

答案 2 :(得分:1)

首先,最重要的是,“破坏”(或任何析构函数)的原因是将“系统”或程序置于已知的稳定状态。在浏览器中,使用Garbage Collection自动为您完成所有内存使用(这是经典问题)。

因此,为什么你可能想要一个析构函数(“destroy”方法)的唯一原因是,如果有一个关于你的系统的抽象属性,那么对象需要确保它处于已知状态。