如何确保正确关闭主干视图

时间:2015-02-20 11:11:37

标签: javascript backbone.js memory-management

我的所有观点附有一个关闭功能,

Backbone.View.prototype.close = function()
{
  this.remove();
  this.unbind();

  if (this.closeMe) this.closeMe();
};

在closeMe()函数内部视图中,我调用了off()函数来从模型和集合中删除以前绑定的回调函数。

closeMe: function()
   {     
     if(this.model)
        this.model.off(null, null, this);
     ...
   }

问题是,如果我在初始化函数中有一些变量附加到当前视图,我是否需要通过closeMe()函数处理它们?

 initialize : function(options)
    {
     ...
     this.myVar= options.something;  
    }

1 个答案:

答案 0 :(得分:1)

garbage collector为您完成这项工作。

  

垃圾收集器算法减少了&#34的定义;不再需要对象" to"一个对象没有引用它的其他对象"。如果指向此对象的引用为零,则该对象被视为可以收集垃圾。

当对视图的引用指向零引用时,垃圾收集器将删除此对象。此时,如果对象myVar没有指向它的引用,垃圾收集器将删除它。

顺便说一下,我建议使用方法listenTo来监听事件而不是方法on,因为这样可以简化代码。在Backbone View上调用remove时,从DOM中删除一个视图,并在视图上调用stopListening以删除视图已经侦听的任何绑定事件。