2017补全计划-前端AOP编程-学习笔记
来源:互联网 发布:淘宝布局管理怎么做好 编辑:程序博客网 时间:2024/05/19 13:43
AOP的学习笔记,参考资料
JavaScript 基于对象事件的 AOP 实现
用AOP改善JavaScript代码
学习笔记 : AOP 主要思想是把一些与业务无关但又在多个模块使用的功能分离出来
如下面代码片段(注释是我的理解),如果想在函数a之前加入一段代码(又不希望直接修改函数a),可以用 a.before(b)的方式,b是另一个函数,把需要的代码段写在b里面。
Function.prototype.before = function( func ) { // func是加入的新函数 如在a函数前加入b函数 // 应该写成 a.before(b) // 这里的this指a函数 , func指b函数 // 作用域问题,copy this var __self = this; return function() { // 在返回的函数内部,实现方式都不一样 // 关键的逻辑在于 // 1.需要调用新函数b 2.再调用函数a if ( func.apply( this, arguments ) === false ) { return false; } return __self.apply( this, arguments ); } } // after逻辑和before相同,区别在于a和b的调用顺序相反 Function.prototype.after = function( func ) { var __self = this; return function() { var ret = __self.apply( this, arguments ); if( ret === false) { return false; } func.apply( this, arguments ); return ret; } }
对于AOP编程的进一步使用,比如职责链模式,a.before(b) 只是为了不污染a的函数环境,而 如果在 a前面需要连续加多个代码端,比如 注册验证,需要检验多个信息(基本信息,身份证,密码确认等等),就需要 a.before(b).before(c).before(d)这样子,而且如果b c d任意一个不通过就注册不成功,这时候需要修改before函数
Function.prototype.before = function( func ) { var __self = this; return function() { // 如果 函数 执行不成功 if ( func.apply( this, arguments )) { //return回去,不进行原函数调用; return ; } return __self.apply( this, arguments ); } }
修改后的before函数,只要新增函数执行返回false,就不再继续进行原函数调用,也就是b c d其中一个false,注册过程不成功
这是目前对AOP的学习笔记,后续还有:
- 防止window.onload被二次覆盖.
- 无侵入的统计代码.
- 组合代替继承.
这些学习过程中觉得似懂非懂的(可能需要实战才真的理解)
0 0
- 2017补全计划-前端AOP编程-学习笔记
- 2017补全计划-事件队列-学习笔记
- 2017补全计划-JS的工厂模式-学习笔记
- 2017补全计划-JS引擎,UI引擎-学习笔记
- 2017补全计划-多线程Worker-学习笔记
- 2017补全计划-持久化缓存-学习笔记
- jquery UI学习笔记-知问前端之自动补全工具UI的tooltip
- jquery UI学习笔记-知问前端之自动补全工具UI
- C++补全计划1
- 数据结构知识补全计划
- Spring学习笔记----AOP编程
- 【Spring学习笔记】AOP编程学习笔记
- 安卓学习笔记之输入框自动补全
- Ruby学习笔记 irb Tab 代码补全 Mac OS
- 前端相关-代码自动补全
- web前端自动补全autocomplete
- [Spring]面向切面编程AOP【学习笔记】
- Spring学习笔记(AOP面向切面编程)
- ScrollView嵌套LinearLayout布局不能撑满全屏的问题
- iOS 关于NSURL那些事
- 成长经历之新年感触
- Leetcode-461. Hamming Distance C++解
- 【JS】前端数学函数应用
- 2017补全计划-前端AOP编程-学习笔记
- Android 为图片添加水印
- 自定义的dialog
- Android Studio不同编译阶段执行的不同命令
- Linux 下定时器的实现方式分析
- Daemon Process
- 将博客搬至CSDN
- 查看注册信息
- 结合友盟统计的多渠道快速打包