関数の実行を遅らせる (OO 的に)
関数を遅れて実行させたいなと思うことがたまにありますので、prototype.js にある bind メソッド*1に習って、再利用可能な形にしてみました:
Function.prototype.delay = function (delay) { window.setTimeout(this, (delay * 1000)); };
(最初に bind の実装を見たときは、関数を this で指すということに驚いたものです。私だけでしょうか?)
用例:
function hello() { alert('Hello from the old world!'); } hello.delay(10);
*1:bind 自体は、Prototype 作者の Sam 氏自身が示唆していることですが、この論文が元になっています: http://www.brockman.se/writing/method-references.html.utf8