Вы можете использовать эту простую функцию
function getRandomColor(){
var color = "#" + (Math.random() * 0xFFFFFF << 0).toString(16);
return color;
}
Я думаю, что он будет (в конечном итоге) собран мусором, как только он выйдет за рамки. Если у вас возникли проблемы с чрезмерным использованием памяти, вы можете попробовать использовать оператор удаления для возвращаемого объекта.
Проблема утечки памяти, похоже, уже была доведена до команды jQuery http://groups.google.com/group/jquery-dev/browse_thread/thread/4a99f6e9b2e33057 / 45ce657a48afd43a
Я попытался найти ответ на свой вопрос, выполнив небольшой тест.
<script type="text/javascript">
$(document).ready(function() {
for ($i=1; $i<10000; $i++) {
$('table').append("<tr id=\"test_" + $i + "\"><td>test " + $i + "</td></tr>");
$('#test_'+($i-1)).remove();
}
});
</script>
<table>
<tr><td id="test_0">test 0</td></tr>
</table>
Я изменил функцию remove (), используя:
var test = $('#test_'+($i-1)).remove();
и оператор удаления (благодаря предложению tvanfosson):
var test = $('#test_'+($i-1)).remove();
delete test
После выполнения этих тестов я бы все равно просто использовал remove (). Очень сложно сказать, была ли утечка памяти, поскольку использование памяти браузером всегда увеличивалось после перезагрузки страницы. Возможно, кто-то другой сможет дать более убедительный ответ, протестировав код иначе.