javascript-patterns
javascript-patterns copied to clipboard
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标签非阻塞载入脚本
- 延迟加载
- 按需加载
- 预加载
- 小节