У меня проблемы с утечкой памяти в JavaScript.
Я использую расширение Leak Memory 0.4.5 для Firefox , которое показывает мне те объекты JavaScript, которые все еще остаются в памяти.
Теперь я не уверен, как правильно отсоединить dom-объект от событий и т. Д.
Например, у меня есть jQuery-виджет с именем dropdownbox.
В методе уничтожения я делаю все необходимое для отсоединения обработчиков событий, таких как:
this.box.find('.toggler').unbind();
this.box.remove();
this.box = null;
Эти 3 строки являются обязательными, или можно вызвать только this.box.remove ()?
До сегодняшнего дня я никогда не связывал и не очищал что-то от элементов DOM, потому что думал, что это не имеет значения. Но я столкнулся с проблемой, что после 2 часов разработки на одном сайте мой Firefox потребляет 1 ГБ!
Итак, я прочитал немного утечек памяти при использовании замыканий и т. Д.
Итак, это мой второй вопрос: я очень часто использую крышки, потому что они действительно классные и удобные.
Некоторые люди говорят, что вы не должны использовать затворы для всего. так, например, если у нас есть следующий код:
function foo(param1, param2) {
var local1, local2;
$('a').click(function() {
alert('YEAH');
});
}
Было бы лучше сделать это так:
funtion foo(param1, param2) {
var local1, local2;
$('a').click(clickEvent);
}
function() {
alert('YEAH');
}
Или я не так понял?