我做了一个small javascript framework,旨在在原型对象模型中添加一些有用的东西(超级方法调用,继承,自动初始化......)。
在这个框架中,会自动调用一些对象方法,比如“init”来构造对象,并在窗口卸载时“销毁”。
我对这种破坏方法有两个问题:
我认为它应该对DOM对象进行一些清理(解除绑定事件),但还有其他清理吗?
如果有人对此框架感兴趣,我将其发布在gitHub上,但是现在没有文档: - /: https://github.com/LeMisterV/EasyPrototype
答案 0 :(得分:3)
一个更好的问题,为什么你需要销毁任何东西?如果窗口正在卸载,一切都将代表您进行垃圾收集。
答案 1 :(得分:2)
某些版本的Internet Explorer卡在JavaScript和DOM之间的循环引用上,因为它们是单独进行垃圾回收的。当您开始向所有事件添加事件处理程序时,这往往会成为一个问题。
您应该在框架中执行的操作是每次添加事件时都要跟踪,以便您可以浏览该事件数组并在卸载时销毁每个事件。
答案 2 :(得分:1)
首先,最重要的是,“破坏”(或任何析构函数)的原因是将“系统”或程序置于已知的稳定状态。在浏览器中,使用Garbage Collection自动为您完成所有内存使用(这是经典问题)。
因此,为什么你可能想要一个析构函数(“destroy”方法)的唯一原因是,如果有一个关于你的系统的抽象属性,那么对象需要确保它处于已知状态。