Я использую много _.each вместо цикла for в моем коде. Выполняет ли функция _.each из библиотеки Underscore.js новую анонимную функцию для каждого вызова? Например.Создает ли underscore.js анонимные объекты func в _.each, которые нужно мусор?
_.each(this.sprites, function(sprite) {
sprite.draw();
this.spriteDraws++
}, this);
Создает ли Unerscore.js новую анонимную функцию для каждого кадра цикла приложения? Нужно ли собирать эту функцию для сбора мусора?
Я заметил, что мое приложение создает бук новых объектов в каждом фрейме и не может их выкорректировать (неважное изображение пилообразного рисунка - на каждом кадре, создается такое же количество объектов и впоследствии мусор). Возможно, это может быть причиной.
Спасибо!
ОБНОВЛЕНИЕ: Как можно глупо, я понял, что я виновник. В каждом вызове _.each я создаю новую анонимную функцию и передаю ее в Underscore.js. Спасибо, Берги подтвердил это. Я тестировал код, и он уже создает меньше объектов.
Обновленный вопрос: Следует ли предпочесть функцию и поместить ее в переменную для повторного использования? Или нужно использовать более традиционный для цикла при работе с массивами?
Я не читал в документации, но я думаю, что '_' есть метод, называемый каждый, который проходит каждый функции на 'Array.prototype.forEach'. Если это так, новый объект не создается. – Mouser
* Вы * создаете объект с выражением функции. – Bergi
Да! Ты прав Берги, я только что понял это несколько часов назад, когда я задал этот вопрос :) Будет ли обновляться вопрос. –