Javascript 从内存中删除旧型号
我创建了一个简单的示例Javascript 从内存中删除旧型号,javascript,backbone.js,Javascript,Backbone.js,我创建了一个简单的示例 在“主干眼”Firefox插件或Chrome的“主干调试器”中,我看到每点击一次按钮,模型的数量就会不断增加。如何从旧对象中释放内存?您的empty函数无法清除所有内容。当然,您正在对this.views中的所有内容调用remove,但您从不清空views数组。请尝试以下版本: empty: function() { _.each(this.views, function(view) { console.log(view.cid)
在“主干眼”Firefox插件或Chrome的“主干调试器”中,我看到每点击一次按钮,模型的数量就会不断增加。如何从旧对象中释放内存?您的
empty
函数无法清除所有内容。当然,您正在对this.views
中的所有内容调用remove
,但您从不清空views
数组。请尝试以下版本:
empty: function() {
_.each(this.views, function(view) {
console.log(view.cid)
view.remove();
});
this.$el.empty();
}
并在单击按钮几次时观察控制台:
您的列表视图
在其视图
数组中会出现越来越多的列表项视图
引用数组,这些僵尸视图将引用集合,集合将引用模型。你需要堵住这个漏洞:
empty: function() {
_.each(this.views, function(view) {
view.remove();
});
this.$el.empty();
this.views = [ ]; // <------
}
主干将自行处理这一问题;从:
构造函数/初始化新视图([options])
有几个特殊选项,如果传递,将直接附加到视图:模型
,集合
,el
,id
,类名
,标记名
,属性
和事件
哦,我忘了清空这个。视图!谢谢你,穆,非常感谢(-:P.S.
this.collection=options.collection;
只是为了清楚起见,无论如何谢谢(-:
empty: function() {
_.each(this.views, function(view) {
view.remove();
});
this.$el.empty();
this.views = [ ]; // <------
}
this.collection = options.collection;