本文省略了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下测试结果: