JavaScriptでAOP
ふとJavaScriptでAOPってできるのかな?と思ったので試してみたら結構簡単にできちゃった。
単純に関数の実行前後に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箇所にまとめられそう。