标签归档:AOP

js的面向切面编程AOP

本文省略了AOP概念介绍,建议有AOP经验的同学查看本文。

本人只是从理论上了解了一下Js的AOP编程,没有实际项目经验,所以就粗略介绍,以作抛砖引玉。

本文仅从before和after两个切面进行举例

代码:

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;
	   }
}

window.onload = function() {
	   console.log(1);
}

window.onload = ( window.onload || function() {} ).after(function() {
	   console.log(2);
});

var Fun = function() {
	   console.log(3);
}

var fun = Fun.after(function() {
	   console.log(4);
   	console.log(arguments);
});

fun('bbs0101');

chrome下测试结果:

AOP编程样例