我有一个关于查看删除/删除的问题。我知道你可以在视图对象上调用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;
答案 0 :(得分:1)
AFAIK您应该将变量设置为null,因为JavaScript的垃圾收集器只会丢弃不再引用的对象(或者没有准确路由到根对象的对象)。在对象上调用.remove()
不会破坏引用,因此它可能会留在内存中。
This post on HTML5Rocks解释了“对象图”是什么以及JavaScript的垃圾收集如何工作。 (我认为GC工作流程因引擎而异,但基本上它是如何工作的)