此文是《JavaScript设计模式与开发实践》的读书笔记
本文所有源码可在这里找到
JavaScript设计模式与开发实践
基础知识
鸭子类型
|
|
多态
|
|
多态2
|
|
多态3
|
|
封装数据
|
|
封装实现
|
|
原型模式
|
|
this
|
|
call、apply
|
|
闭包
|
|
利用闭包创建测试类型函数
|
|
闭包封装变量
|
|
回调函数
|
|
AOP
|
|
函数柯里化
|
|
反柯理化
|
|
函数截流
|
|
分时函数
|
|
惰性载入函数
|
|
单例模式
基本定义
|
|
透明的单例模式
|
|
用代理实现单例模式
|
|
js中的单例模式
|
|
惰性单例
|
|
通用的惰性单例
|
|
策略模式
基本定义
|
|
传统面向对象中的策略模式
|
|
js中的策略模式
|
|
使用策略模式实现缓动动画
|
|
使用策略模式完成表单验证
|
|
代理模式
基本定义
|
|
虚拟代理模式实现图片预加载
|
|
虚拟代理合并http请求
|
|
虚拟代理在惰性加载中的应用
|
|
缓存代理
|
|
用高阶函数动态创建缓存代理
|
|
迭代器模式
基本定义
|
|
迭代类数组对象和字面量对象
|
|
倒序迭代器
|
|
迭代器模式实现上传空间选择
|
|
观察者模式
基本定义
|
|
观察者的通用实现
|
|
使用观察者模式实现网站登录
|
|
全局发布订阅-对象
|
|
支持先发布后订阅、命名空间的观察者模式
|
|
命令模式
基本定义
|
|
带撤销的命令模式
|
|
使用命令模式实现重做
|
|
宏命令
|
|
组合模式
基本定义
|
|
组合模式-引用父对象
|
|
模板方法模式
基本定义
|
|
钩子方法
|
|
模板方法模式在js中的实现
|
|
享元模式
基本定义
|
|
享元模式重构上传
|
|
对象池
|
|
通用对象池
|
|
职责链模式
基本定义
|
|
灵活可拆分的职责链节点
|
|
异步的职责链
|
|
用AOP实现职责链
|
|
用职责链获取文件上传对象
|
|
中介者模式
基本定义
|
|
中介者模式改造泡泡堂游戏
|
|
普通方法购买商品
|
|
中介者模式购买商品
|
|
装饰者模式
基本定义
|
|
装饰函数
|
|
用AOP来装饰函数
|
|
用AOP实现数据上报
|
|
用AOP动态改变函数的参数
|
|
利用AOP动态改变参数实现发送ajax前添加token
|
|
插件式的表单验证
|
|
AOP的注意事项
|
|
状态模式
基本定义
|
|
状态模式改进电灯程序
|
|
状态模式的通用结构
|
|
状态模式实现文件上传
|
|
状态模式重构文件上传
|
|
状态模式注意事项
|
|
js版本的状态机
|
|
使用delegate函数实现状态机
|
|
表驱动的有限状态机
|
|
适配器模式
基本定义
|
|
单一职责原则
基本定义
|
|
最少知识原则
基本定义
|
|
开放封闭原则
基本定义
|
|
接口和面向接口编程
基本定义
|
|
代码重构技巧
基本定义
|
|