我有一些像这样的代码:
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
});
}
})
};
对我的示例代码的其他一般建议也很受欢迎。
答案 0 :(得分:1)
这完全没用:
delete self.collection
self.collection = new self.UserList
所有delete
都会从自身对象中删除collection
字段,然后立即重新创建它。做这个任务。
我认为您认为delete self.collection
应该以某种方式导致字段指向的对象的垃圾收集。它没有。
此外,请勿使用self
作为变量名称。浏览器使用它来表示呃某事。