Показать сообщение отдельно
  #2 (permalink)  
Старый 26.02.2015, 10:54
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Сообщение от JSInteres
Есть вот такая вот задачка, c утечкой памяти в методе writeToLog. Каждый раз создается большой объект и ссылка на него сохраняется в определении функции writeToLog , сборщик мусора не удаляет объект, так как на него сохраняется ссылка. Итак далее по нарастающей. Как лучше решить данную задачу не передавая priorItem функции writeToLog в качестве параметра? Так как writeToLog не подразумевает работу с какими либо ещё переменными.
var theItem = null;
var replaceItem = function () {
    var priorItem = !!theItem;
    var writeToLog = function () {
        if (priorItem) {
            console.log("hi");
        }
    };
    theItem = {
        longStr: new Array(1000000).join('*'),
        someMethod: function () {
            console.log(someMessage);
        }
    };
};
setInterval(replaceItem, 1000);


Все зависит от целей вашей задачи, в данном конкретном случае достаточно "priorItem" сделать булиновой переменной в зависимости от значения "theItem".

Последний раз редактировалось tsigel, 26.02.2015 в 10:57.
Ответить с цитированием