setIntervalの便利版
setIntervalは、登録したcallback関数のthisがおかしくなったり、callback関数に値を渡すのが面倒臭かったり(値を渡すにはsetIntervalの第三引数を使えばいいけど、それだと引数が固定されちゃう)、タイマーのidが、setIntervalの戻り値にしか渡されないから、callback関数内でclearIntervalするためには変数に保持しなきゃいけなかったり、少し不便。
var timer = { loop: function(fn, ms, v) { var self = this, id = null; return id = setInterval(function(n) { v = fn.call(self, v, id, n); }, ms); }, one: function(fn, ms, v) { var self = this, id = null; return id = setTimeout(function(n) { fn.call(self, v, id, n); }, ms); } }; timer.loop(function(i, id) { if (i >= 100) { clearInterval(id); return; } document.body.textContent = i; return i + 1; }, 10, 0);