JS实现AOP拦截方法调用
//JS实现AOP拦截方法调用
function jsAOP(obj,handlers) {
if(typeof obj == ‘function‘){
obj = obj.prototype;
}
for(var methodName in handlers){
var _handlers = handlers[methodName];
for(var handler in _handlers){
if((handler == ‘before‘ || handler == ‘after‘) && typeof _handlers[handler] == ‘function‘){
eval(handler)(obj,methodName,_handlers[handler]);
}
}
}
//方法执行前
function before(obj,method,f) {
var original = obj[method];
obj[method] = function() {
var isSubmit = f.apply(this, arguments);
if(!isSubmit) return false;
return original.apply(this, arguments);
}
}
//方法执行后
function after(obj,method, f) {
var original = obj[method];
obj[method] = function() {
original.apply(this, arguments);
return f.apply(this, arguments);
}
}
}
//调用方式;window:方法所在对象;doSubmit:拦截方法名称
jQuery(document).ready(function(){
jsAOP(window,{‘doSubmit‘:{before:function(){alert("before")},after:function(){alert("after")}}});
});
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。