前端学习心得-javascript设计模式与开发实践-AOP面向切面编程
2017-11-29 15:34
405 查看
AOP面向切面编程主要用于抽离与核心业务逻辑无关的功能,如日志统计、异常处理等等,可以提高业务模块功能的纯净度与被分离模块的复用性
如上例,func函数通过原型链继承Function的方法,可以在自身函数调用前、后分别执行before与after
最终输出结果如下:
踩坑:最开始看到这段代码头疼了一会,尤其是链式调用那一块有点理不清逻辑,经过逐步调试发现
func = func.before(function(){
console.log(11);
}).after(function(){
console.log(33);
})这一块相当与声明,都只会执行before()和after()函数中返回函数外部的内容,因此控制台先输出
其中,在执行下面函数的时候会返回func的原函数,因此可以进行链式调用,继续执行.after();func.before(function(){
console.log(11);
})声明完成后,调用func()则真正开始执行return内部的函数
上述代码最开始一直不明白为什么一定要先声明一个变量ret,最后再return ret,取消声明,直接return _self.apply(this,arguments),控制台会先输出3,琢磨了半天才突然反应过来,var ret = _self.apply(this,arguments)除了定义变量还会执行_self.apply(this,arguments)函数
如上例,func函数通过原型链继承Function的方法,可以在自身函数调用前、后分别执行before与after
最终输出结果如下:
踩坑:最开始看到这段代码头疼了一会,尤其是链式调用那一块有点理不清逻辑,经过逐步调试发现
func = func.before(function(){
console.log(11);
}).after(function(){
console.log(33);
})这一块相当与声明,都只会执行before()和after()函数中返回函数外部的内容,因此控制台先输出
其中,在执行下面函数的时候会返回func的原函数,因此可以进行链式调用,继续执行.after();func.before(function(){
console.log(11);
})声明完成后,调用func()则真正开始执行return内部的函数
上述代码最开始一直不明白为什么一定要先声明一个变量ret,最后再return ret,取消声明,直接return _self.apply(this,arguments),控制台会先输出3,琢磨了半天才突然反应过来,var ret = _self.apply(this,arguments)除了定义变量还会执行_self.apply(this,arguments)函数
相关文章推荐
- 前端学习心得-javascript设计模式与开发实践-高阶函数
- 前端学习心得-javascript设计模式与开发实践-命令封装模式
- Spring学习(六)-面向切面编程(AOP)
- Method Swizzling和AOP(面向切面编程)实践
- Spring学习笔记(AOP面向切面编程)
- Spring基础学习(八)——AOP面向切面编程
- Spring学习之旅(二) AOP(面向切面编程)的使用
- Java利用动态代理模拟实现Spring的AOP(面向切面编程)功能的小实践
- spring框架学习之路(一)-入门基础(2)-动态代理和AOP(面向切面编程)
- 发挥个人的优势,踏踏实实的学习前端开发,为你传授学习心得
- Spring实践:面向切面编程(AOP)
- Spring实践之面向切面编程(AOP)
- Spring学习之深入AOP面向切面编程
- Method Swizzling和AOP(面向切面编程)实践
- Spring学习三(AOP面向切面编程)
- Spring4第四讲学习笔记,AOP面向切面编程
- Spring.Net学习 控制反转(IoC)和面向切面编程(AOP) (转)
- Spring学习笔记 —— AOP(面向切面编程) 之使用ProxyFactoryBean实现AOP
- 【spring源码学习】spring的AOP面向切面编程的实现解析
- APP开发实战58-面向切面编程(AOP)