您的位置:首页 > Web前端 > JavaScript

前端学习心得-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)函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息