var myfn = function(arg){
var be,af,_fn;
setTimeout(function(){
be && be();
console.log(arg);
af && af();
});
function bef(cb){be=cb;return _fn;}
function aft(cb){af = cb;return _fn;}
_fn = {
before: bef,
after: aft
}
return _fn;
}
myfn(1).before(function(){console.log(0);}).after(function(){console.log(2);})//0 1 2
它工作得很好,但不知道问题是什么??我看到许多AOP的实现只是包装myfn并返回代理fn,比如jquery AOP插件。
我在这里看到的主要问题是
- 你的函数没有
return
任何东西 在添加before/after回调之前,你总是需要知道参数 - 你的函数不是通用的,它不包装任意函数