aop.js
518 Bytes
define(function(){return{around:function(a,b,c){var d=c||eval("this");Object.keys(d).forEach(function(n){var t,r,e;"function"==typeof d[n]&&n.match(a)&&(d[n]=(t=d[n],r=n,e=d,function(){return b.call(e,{fn:t,fnName:r,arguments:arguments})}))})},next:function(n){return n.fn.apply(this,n.arguments)},before:function(n,t,r){var a=this;a.around(n,function(n){return t.apply(this,n.arguments),a.next(n)},r)},after:function(n,r,t){var a=this;a.around(n,function(n){var t=a.next(n);return r.apply(this,n.arguments),t},t)}}});