我有一个关于视图删除/移除的问题。我知道您可以在视图对象上调用remove方法,这将删除DOM元素和任何通过listenTo绑定的事件侦听器。我的问题是,你是否需要做更多的事情。我通常在这些视图中绑定一些额外的变量,我想知道是否也需要将这些变量设为空。
示例视图:
var myView = Backbone.View.extend({
el: '#exampleContainer',
events: {
'click': 'onClick'
},
initialize: function() {
this.exampleString = 'Hello World';
this.$exampleSelector = this.$('#exampleChild');
},
onClick: function(event) {
console.log('Hello World');
}
});另外,我假设调用remove还不够,但我还需要将指向视图的变量设为空,这样做对吗?
myView.remove();
myView = null;发布于 2013-06-24 01:56:24
AFAIK您应该将变量设置为null,因为JavaScript的垃圾收集器将只丢弃不再被引用的对象(或者确切地说,是没有到根对象的路由的对象)。在对象上调用.remove()不会破坏引用,因此它可能会留在内存中。
This post on HTML5Rocks解释了什么是“对象图”以及JavaScript的垃圾收集是如何工作的。(我认为不同引擎的GC工作流是不同的,但这基本上就是它的工作方式)
https://stackoverflow.com/questions/17263497
复制相似问题