JavaScript设计模式与开发实践-第3章-闭包和高阶函数

1、闭包

函数作用域:函数中搜索一个变量是从内到外,内部可以访问外部的变量,外部不可以访问内部的变量

变量生存周期:函数调用结束,局部变量就会被销毁,但是如果使用闭包结构,就可以延长局部变量的生命

闭包的作用:

  • 封装变量
  • 延长局部变量的寿命

闭包是JavaScript实现面向对象设计的重要一点

闭包与内存管理:闭包的作用域链中保存了一些DOM节点,并产生了循环引用的情况时,会产生内存泄漏,解决的方法是将循环引用的变量设为null

 

2、闭包与命令模式(编程实现)

命令模式:把请求封装成对象,解除请求发起者执行者的耦合。预先向命令对象中植入命令的接收者

 

3、高阶函数

高阶函数的特征:

  • 可以作为参数传递(回调函数、异步请求)
  • 可以作为返回值return(实现isType,getSingle)

高阶函数实现AOP,实现函数after和before方法(编程实现)

高阶函数其他应用:

  • 函数currying化:currying的函数会接受参数,不立刻求值,而是用闭包保存。待真正需要求值的时候,一次性求值(编程实现)
  • 函数uncurrying化 :可以将某些对象的方法独立出来使用,例如Array.prototype.push。和上面的currying关系不大(编程实现)
  • 函数节流:将要执行的函数延迟一段时间执行(编程实现)
  • 分时函数:让创建节点的工作分批进行(编程实现)
  • 惰性加载函数:第一使用addEvent以后会重写这个函数(编程实现)

 

posted on 2016-03-22 22:46  JayusTree  阅读(188)  评论(0)    收藏  举报

导航