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 =