高阶函数实现AOP
Posted 小小坤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数实现AOP相关的知识,希望对你有一定的参考价值。
AOP(面向切面程序)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日至统计、安全控制、异常处理等。把这些功能抽离出来之后,再通过“动态织入”的方式掺入业务逻辑模块中。这样做的好处首先是可以保证业务逻辑模块的纯洁和高内聚性,其次是可以很方便的复用日志统计模块。在javascript中实现AOP,都是只把一个函数“动态织入”到另一个函数之中,具体实现技术很多,现在用prototype来实现一个
面向切面程序
Function.prototype.before=function(beforefn){ var self=this;//保存原函数的引用 return function(){//返回包含了原函数和新函数的“代理”函数 beforefn.apply(this,arguments);//执行新函数,修正this return self.apply(this,arguments);//执行原函数 } } Function.prototype.after=function(afterfn){ var self=this;//保存原函数的引用 return function(){//返回包含了原函数和新函数的“代理”函数 var ret=self.apply(this,arguments);//执行原函数 afterfn.apply(this,arguments);//执行新函数,修正this return ret; } } var fn=function(){ console.log("fn"); } fn=fn.before(function(){ console.log("before"); }).after(function(){ console.log("after"); }); fn();
以上是关于高阶函数实现AOP的主要内容,如果未能解决你的问题,请参考以下文章