2013-06-23 3 views
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'); 
    } 
}); 

Кроме того, я был бы прав, если предположить, что это не достаточно, чтобы назвать удалить, но я также необходимо обнулить переменную, указывающую на вид?

myView.remove(); 
myView = null; 

ответ

1

AFAIK вы должны установить переменную в нуль, так как сборщик мусора в JavaScript будет только выбросить объекты, которые больше не ссылаются (или объекты, которые не имеют никакого пути к корневому объекту, чтобы быть точным). Вызов .remove() на объект не уничтожит ссылку, поэтому он, вероятно, останется в памяти.

This post on HTML5Rocks объясняет, что такое «График объектов» и как работает сборщик мусора JavaScript. (Я думаю, что рабочий процесс GC отличается от двигателя к двигателю, но в основном это работает)

+0

Большое спасибо за ответ. Я рад, что был на правильном пути, так что спасибо за уверенность в том, что переменная установлена ​​в нуль! –