JavaScript Patterns
“JavaScript patterns”中译本 –《JavaScript 模式》
- 作者:Stoyan Stefanov
- 翻译:拔赤、goddyzhao、TooBug
偷懒是程序员的低劣品质,模式则是先人们总结的偷懒招式。Stoyan Stefanov 的这本书,从 JavaScript 的理论应用场景登程,提炼了不少能够让前端们偷懒的实用招式。模式的摸索、翻新,将永远是程序员自我晋升的一条修炼之道。值得一读。
目录
第一章 概述
- 模式
-
JavaScript:概念
- 面向对象
- 无类
- 原型
- 运行环境
- ECMAScript 5
- JSLint
- 控制台工具
第二章 高质量 JavaScript 根本要点
- 编写可保护的代码
-
缩小全局对象
- 全局对象带来的困扰
- 遗记 var 时的副作用
- 拜访全局对象
- 单 var 模式
- 申明提前:扩散的 var 带来的问题
- for 循环
- for-in 循环
- (不)裁减内置原型
- switch 模式
-
防止隐式类型转换
- 防止应用 eval()
- 应用 parseInt() 进行数字转换
-
编码格调
- 缩进
- 花括号
- 左花括号的搁置
- 空格
-
命名标准
- 结构器命名中的大小写
- 单词分隔
- 其余命名格调
- 书写正文
-
书写 API 文档
- 一个例子:YUIDoc
- 编写易读的代码
- 互相评审
- 生产环境中的代码压缩(Minify)
- 运行 JSLint
- 小结
第三章 间接量和构造函数
-
对象间接量
- 对象间接量语法
- 通过构造函数创建对象
- 取得对象的结构器
-
自定义构造函数
- 构造函数的返回值
-
强制应用 new 的模式
- 命名约定
- 应用 that
- 调用本身的构造函数
-
数组间接量
- 数组间接量语法
- 有意思的数组结构器
- 查看是不是数组
-
JSON
- 应用 JSON
-
正则表达式间接量
- 正则表达式间接量语法
- 原始值的包装对象
- Error 对象
- 小结
第四章 函数
-
背景常识
- 术语释义
- 申明 vs 表达式:命名与提前
- 函数的 name 属性
- 函数提前
-
回调模式
- 一个回调的例子
- 回调和作用域
- 异步事件监听
- 超时
- 库中的回调
- 返回函数
- 自定义函数
-
立刻执行的函数
- 立刻执行的函数的参数
- 立刻执行的函数的返回值
- 益处和用法
- 立刻初始化的对象
- 条件初始化
- 函数属性——Memoization 模式
- 配置对象
-
柯里化(Curry)
- 函数利用
- 局部利用
- 柯里化
- 什么时候应用柯里化
- 小结
第五章 对象创立模式
-
命名空间模式
- 通用的命名空间函数
- 申明依赖
-
公有属性和办法
- 公有成员
- 特权办法
- 私有化失败
- 对象间接量及其公有成员
- 原型及其公有成员
- 将公有函数裸露为共有办法
-
模块模式
- 裸露模块模式
- 创立结构器的模块
- 在模块中引入全局上下文
-
沙箱模式
- 全局构造函数
- 增加模块
- 实现这个构造函数
-
动态成员
- 共有动态成员
- 公有动态成员
- 对象常量
-
链式调用模式
- 链式调用模式的利弊
- method() 办法
- 大节
第六章 代码复用模式
- 类式继承 vs 古代继承模式
- 类式继承的冀望后果
-
类式继承 1 ——默认模式
- 跟踪原型链
- 这种模式的毛病
-
类式继承 2 ——借用构造函数
- 原型链
- 利用借用构造函数模式实现多继承
- 借用构造函数的利与弊
- 类式继承 3 ——借用并设置原型
- 类式继承 4 ——共享原型
-
类式继承 5 —— 长期构造函数
- 存储父类
- 重置构造函数援用
- Klass
-
原型继承
- 探讨
- 例外的 ECMAScript 5
- 通过复制属性继承
- 混元(Mix-ins)
-
借用办法
- 例:从数组借用
- 借用并绑定
- Function.prototype.bind()
- 小结
第七章 设计模式
-
单例
- 应用 new
- 将实例放到动态属性中
- 将实例放到闭包中
-
工厂模式
- 内置对象工厂
- 迭代器
-
装璜器
- 用法
- 实现
- 应用列表实现
-
策略模式
- 数据验证示例
- 外观模式
-
代理模式
- 一个例子
-
中介者模式
- 中介者示例
-
观察者模式
- 例 1:杂志订阅
- 例 2:按键游戏
- 小结
第八章 DOM 和浏览器模式
- 拆散关注点
-
DOM 脚本编程
- DOM 拜访
- DOM 操作
-
事件
- 事件处理
- 事件委托
-
长时间运行的脚本
- setTimeout()
- Web Workers
-
近程脚本
- XMLHttpRequest
- JSONP
- Frame 和 Image 加载指示器
-
部署 JavaScript
- 合并脚本
- 代码减肥和压缩
- 过期头
- 应用 CDN
-
加载策略
- script 标签的地位
- HTTP 分块
- 动静插入 script 标签非阻塞载入脚本
- 提早加载
- 按需加载
- 预加载
- 大节