0

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

1 回答 1

1

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

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

于 2013-06-23T17:56:23.920 回答