js面向切面编程

Function.prototype.before=function(func){
 var _self=this;
 return function(){
  if(func.apply(this,arguments)==false){
   return false;
  }
  return _self.apply(this,arguments);
 }
}
Function.prototype.after=function(func){
 var _self=this;
 return function(){
  var ret=_self.apply(this,arguments);
  if(ret===false){
   return false;
  }
  func.apply(this,arguments);
  return ret;
 }
}
var a=function(){
 alert("a")
};
var a0=function(){
   alert(0)
}
var a1=function(){
   alert(1)
}
var a2=function(){
   alert(2)
}
var a3=function(){
   alert(3)
}
var a4=function(){
   alert(4)
}
n=a.before(a1).before(a2).after(a2).after(a3).after(a1).before(a4)
n()//=>4 2 1 a 2 3 1
n()//=>4 2 1 a 2 3 1
posted @ 2015-04-03 12:49  无工时代  阅读(528)  评论(0编辑  收藏  举报