JavaScriptでAOP

ふとJavaScriptAOPってできるのかな?と思ったので試してみたら結構簡単にできちゃった。
単純に関数の実行前後にalartを出すだけだとこんな感じ。

function traceInterceptor(func) {
    return function() {
        alert('START');
        var ret = func.apply(this, arguments);
        alert('END');
        return ret;
    }
}

これを定義しておいて、

function add(num1, num2) {
    return num1 + num2;
}
add = traceInterceptor(add);

こんなふうにすれば、最後の"add = traceInterceptor(add);"を実行したあとはaddが呼ばれるたびにalertがでるようになる。
これを改良すればデバッグ楽になりそうかな〜
画面に複数ボタンがあるときの2度押し防止処理とか、工夫すれば分散してるロジックが1箇所にまとめられそう。