js实现AOP,面向切面编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了js实现AOP,面向切面编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1781字,纯文字阅读大概需要3分钟。
内容图文
![js实现AOP,面向切面编程](/upload/InfoBanner/zyjiaocheng/596/16b3c3c16807486590139e0842090cc0.jpg)
js实现AOP,面向切面编程
面向切面编程(AOP)是java常用编程思想,它的作用是在某个函数上进行切割,可以在函数执行前/中/后添加其他逻辑代码。
AOP编程的好处是遵循单一原则,不会修改原函数内部的代码就可以改变原函数的逻辑。
js中实现AOP使用protoType
原型链,例如下面代码
/**
* 切入方法前
* @param {Function} fun 前置函数
* @returns
*/
Function.prototype.before = function(fun){
var self = this;// 保存被拦截函数的this
return function(){// 代理函数
fun.apply(this,arguments);
var agent = self.apply(this,arguments);// 返回代理函数
return agent;
}
}
/**
* 切入方法后
* @param {Function} fun 后置函数
* @returns
*/
Function.prototype.after = function(fun){
var self = this;// 保存被拦截函数的this
return function(){// 代理函数
var agent = self.apply(this,arguments);// 返回代理函数
fun.apply(this,arguments);
return agent;
}
}
// 业务代码
function logic(){
console.log('业务代码');
}
// 切入
logic = logic.before(function(){
console.log('切入前');
}).after(function(){
console.log('切入后');
})
// 测试
logic();
上面方法通过返回一个代理函数的方式,巧妙的实现链式编程。
改进
如果不想污染Function
的原型链,可以使用如下方法
/**
* 切入前
* @param {Function} fn 业务底阿妈
* @param {Function} beforeFn 前置函数
* @returns
*/
var before = function(fn, beforeFn){
return function(){
beforeFn.apply(this, arguments);
return fn.apply(this, arguments);
}
}
/**
* 切入后
* @param {Function} fn 业务底阿妈
* @param {Function} beforeFn 后置函数
* @returns
*/
var after = function(fn, afterFn){
return function(){
var agent = fn.apply(this, arguments);
afterFn.apply(this, arguments);
return agent;
}
}
var logic = function(){
console.log('业务代码')
}
// 切入
logic = before(logic, function(){
console.log('切入前代码')
})
logic = after(logic,function(){
console.log('切入后')
})
logic();
参考文献
- JavaScript设计模式与开发实践. 曾探. [D]
内容总结
以上是互联网集市为您收集整理的js实现AOP,面向切面编程全部内容,希望文章能够帮你解决js实现AOP,面向切面编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。