我有一个使用这样工作的backbonejs应用程序:
[Backbone MODEL] <----> [Backbone VIEW] <----> [DOM ELEMENT]
创建模型和视图并将其分配给函数范围内的局部变量。如果我删除了dom元素(通过在它的父元素上调用jQuery()。empty()),这将删除对View&amp;的所有引用。随后模型避免僵尸对象/内存泄漏?
答案 0 :(得分:4)
只要你永远不会将模型或视图变量分配给任何会留下来的东西。警惕变量周围的闭包,不要将变量作为任何其他对象的属性附加,不要将视图或模型附加到任何其他对象的任何事件。然后是的,这将使自己清理干净。
但是这些是一些非常严格的规则要遵守并且不适合大多数应用程序。您应该明确地处理事件处理程序的删除,并删除您创建的任何对象上的任何属性。
我有一些与此相关的文章(似乎你已经阅读过至少其中一篇文章了):
zombie的清理代码的实现,以及更多,作为它自己的对象: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/