我应该删除javascript吗?

时间:2011-12-26 03:48:59

标签: javascript memory backbone.js

我有一些像这样的代码:

var User = function () {
  _.bindAll(this)

  this.UserList = Backbone.Collection.extend({
    model: UserModel
    // ...
  });

  this.UserListView = Backbone.View.extend({
  // ... etc
}

User.prototype.display = function() {
  var self = this
  self.collection = new self.UserList
  self.collection.fetch({
    success: function(collection, response) {
      self.users = new self.UserListView({
        collection: self.collection
      });
    }
  })
};


var user = new User()

route("users", function () {
  user.display()
})

我的问题是,这会导致内存问题吗?每次用户到达user/:userPage路径时,视图,集合等都将被重新创建。是旧的还是要删除,还是我必须手动删除它?

我应该这样做:

User.prototype.display = function() {
  var self = this
  delete self.collection
  self.collection = new self.UserList
  self.collection.fetch({
    success: function(collection, response) {
      delete self.users
      self.users = new self.UserListView({
        collection: self.collection
      });
    }
  })
};

对我的示例代码的其他一般建议也很受欢迎。

1 个答案:

答案 0 :(得分:1)

这完全没用:

   delete self.collection
   self.collection = new self.UserList

所有delete都会从自身对象中删除collection字段,然后立即重新创建它。做这个任务。

我认为您认为delete self.collection应该以某种方式导致字段指向的对象的垃圾收集。它没有。

此外,请勿使用self作为变量名称。浏览器使用它来表示呃某事。