aop在js的实现
由于功能上的需求,需要在js的N个方法前执行一些判断代码,M个方法后执行处理代码。如果直接将代码写在具体方法里面增加处理代码,那会导致代码很难维护。对于这个需求,当时想到有2种解决方案。
1.新建一个抽象类,统一入口,然后在入口再分发到具体的方法。但需要对源代码进行不少改动。而且如何分发也是一些问题,如方法参数不一。所以就没坚持这种方案。
2.搬照spring的AOP编程。最后发现是可以实现的。
网上找了一些资料,修改整理了一个util类
Js代码
/*
aop工具类
onedear 2011-06-10
*/
var AOPUtil = {
/*
className:个人称之为作用域,也可称之为类名
fnName:方法名,字符串类型
beforeFn:before function
*/
before : function (className , fnName , beforeFn) {
if(typeof(className) == 'function')
className = className.prototype ;
if(typeof(className[fnName]) != 'function')
return ;
if(typeof(beforeFn) != 'function')
return ;
var target = className[fnName] ;
className[fnName] = function () {
beforeFn.apply(this,arguments);
return target.apply(this, arguments);
}
},
beforeJudge : function (className , fnName , beforeFn) {
if(typeof(className) == 'function')
className = className.prototype ;
if(typeof(className[fnName]) != 'function')
return ;
&nb
相关新闻>>
- 发表评论
-
- 最新评论 更多>>