/js_design_patterns

introduce some JavaScript design patterns, application of high-order function and design philosophy.

Primary LanguageJavaScript

JavaScript设计模式

  • 单例模式
  • 代理模式
  • 观察者模式(发布订阅模式)
  • 命令模式
  • 组合模式
  • 模板方法模式
  • 职责链模式

高阶函数应用

  • 柯里化: 函数首先接受一些参数,然后返回另外一个参数,刚才传入的参数在函数形成的闭包中被保存起来
  • 反柯里化: 当我们调用对象的某个方法时,其实不用去关心该对象原本是否被设计为拥有这个方法
  • 函数节流: 使用场景--函数被触发的频率太高(函数是浏览器自动调用的)
  • 分时函数: 使用场景--函数被触发的频率太高(函数是用户主动调用的)
  • 惰性加载函数: 使用场景--在第一次使用该函数时,才根据实际情况动态生成该函数

设计**

面向切面编程(AOP)
  • 实现方式
    • 给Function.prototype添加before, after方法
    • 使用高阶函数实现
    • 可传入构造函数的实现方式
  • 使用场景
    • 改变参数
    • 校验form表单的输入数据
    • 日志功能,记录用户操作
    • 防止表单重复提交
依赖注入/控制反转(DI/IoC)
  • RequireJS / AMD 的方法
  • 反射方法:
    • 反射是指一个程序在运行时检查和修改一个对象的结构和行为的能力。
    • 简单的说,在JavaScript的上下文里,这具体指读取和分析的对象或函数的源代码。
  • 综合AMD方法和反射方法
test git revert