-
含义:
-
同一操作用与不同的对象上面, 可以产生不同的解释和不同的执行结果
-
多态背后的思想是将 '做什么' 和 '谁去做以及怎么去做' 分离开来
-
也就是将 '不变的事物' 与 '可能改变的事物' 分离开来
-
把不变得部分隔离开来, 把可变的部分封装起来. 符合 开放-封闭的原则.
-
-
原则:
-
所有的数据都是对象
-
要得到一个对象, 不是通过实例化类. 而是找到一个对象作为原型并克隆他
-
对象会记住他的原型
-
如果对象无法响应某个请求, 它会把这个请求委托给他自己的原型
-
-
this
- this 的指向问题
-
call 和 apply
- 就是让一个对象, 去借用另一个对象上的方法
-
bind
-
AOP (面向切面编程)
-
函数科里化(currying)
- 一个 currying 的函数首先会接受一些参数, 接受这些参数之后, 该函数并不会立即求值, 而是继续返回另外一个函数, 刚才传入的函数形成的闭包中被保存起来, 待到函数被正真需要求值的时候, 之前传入的所有参数都会被一次性用于函数求值.
-
函数节流
- 解决函数被触发的频率太高, 限制同一个函数被频繁调用
-
惰性加载函数
- 每次进去分支判断时, 重写原函数
-
定义: 保证一个类仅有一个实例, 并且提供一个访问它的全局变量
-
核心: 就是 确保只有一个实例, 并提供全局访问
-
惰性单例: 在需要的时候才创建对象实例
-
定义: 定义一系列算法, 把它们一个个封装起来, 并且使它们可以相互替换
-
一个基于策略模式的程序至少由两部分组成.
-
策略组类, 策略类封装了具体的算法, 并且负责具体的计算过程
-
环境组类, 环境类接受客户的请求,随后将请求委托给某一个策略类
-
-
定义: 为一个对象提供一个代用品或占位符, 以便控制对它的访问
-
定义: 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不需要暴露该对象的内部表示
-
定义: 定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都将得到通知
-
定义: 指的是一个执行某些特定事情的指令.
-
在javascript中, 函数作为一等对象. 所以 命令模式其实是回调函数的一个面向对象的替代品
-
定义: 组合模式是将对象组合成树形结构, 以表示 "部分-整体" 的层次结构, 再者, 利用对象的多态性统一对待组合对象和单个对象.