関数の実行を遅らせる (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