我有一个backbonejs应用程序,它的工作原理是这样的:
[Backbone MODEL] <----> [Backbone VIEW] <----> [DOM ELEMENT]
模型和视图被创建并分配给函数范围内的局部变量。如果我删除 dom 元素(通过在其父元素上调用 jQuery().empty()),这是否会删除对 View 的所有引用以及随后的 Model 以避免僵尸对象/内存泄漏?
我有一个backbonejs应用程序,它的工作原理是这样的:
[Backbone MODEL] <----> [Backbone VIEW] <----> [DOM ELEMENT]
模型和视图被创建并分配给函数范围内的局部变量。如果我删除 dom 元素(通过在其父元素上调用 jQuery().empty()),这是否会删除对 View 的所有引用以及随后的 Model 以避免僵尸对象/内存泄漏?
只要您从不将模型或视图变量分配给任何会留下来的东西。警惕围绕变量的闭包,不要将变量作为任何其他对象的属性附加,不要将视图或模型附加到来自任何其他对象的任何事件。那么是的,这将自行清理。
但这些是一些非常严格的规则,需要遵守并且不能很好地与大多数应用程序配合使用。您应该明确处理事件处理程序的删除,并删除您创建的任何对象的任何属性。
我有几篇与此相关的文章(您似乎已经阅读过其中至少一篇):
经典的僵尸帖子: http: //lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/
僵尸清理代码的实现,以及更多,作为它自己的对象:http: //lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/
JavaScript 和 Backbone 中的内存管理:http: //lostechies.com/derickbailey/2012/03/19/backbone-js-and-javascript-garbage-collection/