主干:查看删除/删除

Backbone: View Deletion / Removal

本文关键字:删除 主干      更新时间:2023-09-26

我有一个关于视图删除/删除的问题。我知道您可以对视图对象调用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;

AFAIK您应该将变量设置为null,因为JavaScript的垃圾收集器只会丢弃不再被引用的对象(确切地说,是没有路由到根对象的对象)。对对象调用.remove()不会破坏引用,因此它可能会留在内存中。

这篇关于HTML5Rocks的文章解释了什么是"对象图"以及JavaScript的垃圾收集是如何工作的。(我认为GC工作流因引擎而异,但基本上就是这样工作的)