JavaScriptでアスペクト志向してしまおうというライブラリです。
(aspectjs.js download)
元となる関数とアスペクトを受け取って
アスペクトを適用した後の関数を返します。
適用対象の関数を探す機能はありません
(そのうち作るつもりではありますが)。
ちなみにライセンスは
前述のソースファイルにも書いてあるように
MIT License
です。
著作権と許諾の表記を消さない限り自由に使って構いません。
このページを読み込んだ際に表示された ポップアップがサンプルです。 使い方としてはまず
<script type="text/javascript" src="aspectjs.js">
</script">
としてaspectjs.jsを読み込みます。 するとグローバル名前空間にkilreyというオブジェクトが作られ、 そのプロパティとしてkilrey.wrapという関数が作られます。 このwrap関数を
<script type="text/javascript">
var func = kilrey.wrap(alert, undefined, undefined,
function(original, args) {
original("AspectJS Wrapped["+args[0]+"]");
});
func("TEST");
</script">
のように呼び出して操作後の関数を得ます。
wrap関数は
(original, before, after, arround)
という引数を取り、
任意個の引数を取る関数を返します。
以下ではwrapの返り値の関数を実行する際に
渡される引数を配列化したものをargsと呼びます。
originalは操作の対象となる関数です。
beforeはoriginalを呼び出す前に呼び出される関数で、
before(original, args)のように呼び出されます。
afterはoriginalを呼び出した後に呼び出される関数で、
after(original, args)のように呼び出されます。
arroundはoriginalの代わりに呼び出される関数で、
arround(original, args)のように呼び出されます。