Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
javascript.patterns
Branch: master
Pull request Compare This branch is 2 commits ahead of lxj:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
README.markdown
chapter1.markdown
chapter2.markdown
chapter3.markdown
chapter4.markdown

README.markdown

JavaScript Patterns

JavaScript.patterns

“JavaScript patterns”中译本 - 《JavaScript 模式》

偷懒是程序员的优良品质,模式则是先人们总结的偷懒招式。Stoyan Stefanov 的这本书,从 JavaScript 的实际使用场景出发,提炼了不少可以让前端们偷懒的实用招式。模式的探索、创新,将永远是程序员自我提升的一条修炼之道。值得一读。

目录

第一章 概述

第二章 高质量JavaScript基本要点

第三章 直接量和构造函数

第四章 函数

第五章 对象创建模式

  • 命名空间模式
    • 通用的命名空间函数
  • 声明依赖
  • 私有属性和方法
    • 私有成员
    • 特权方法
    • 私有化失败
    • 对象直接量及其私有成员
    • 原型及其私有成员
    • 将私有函数暴露为共有方法
  • 模块模式
    • 暴露模块模式
    • 创建构造器的模块
    • 在模块中引入全局上下文
  • 沙箱模式
    • 全局构造函数
    • 添加模块
    • 实现这个构造函数
  • 静态成员
    • 共有静态成员
    • 私有静态成员
  • 对象常量
  • 链式调用模式
    • 链式调用模式的利弊
  • method() 方法
  • 小节

第六章 代码重用模式

  • 类式继承 vs 现代继承模式
  • 类式继承的期望结果
  • 经典模式 1 ——默认模式
    • 使用原型链
    • 模式 1 的缺陷
  • 经典模式 2 ——借用构造器
    • 原型连
    • 通过借用构造函数实现多重继承
    • 借用构造器模式的利弊
  • 经典模式 3 ——借用并设置原型
  • 经典模式 4 ——共享原型
  • 经典模式 5 —— 临时构造器
    • 存储父类
    • 重置构造器引用
  • Klass
  • 原型继承
    • 讨论
    • 除了ECMAScript5之外
  • 通过拷贝属性继承
  • 混元
  • 借用方法
    • 例子:从数组借用
    • 借用和绑定
    • Function.prototype.bind()
  • 小节

第七章 设计模式

  • 单体
    • 使用 new
    • 静态属性中的实例
    • 闭包中的实例
  • 工厂
    • 内置对象工厂
  • 迭代器
  • 装饰者
    • 用法
    • 实现
    • 使用列表实现
  • 策略
    • 数据校验的例子
  • 外观
  • 代理
    • 一个例子
    • 作为缓存的代理
  • 中介者
    • 中介者例子
  • 观察者
    • 例子 1:杂志订阅
    • 例子 2:按键游戏
  • 小节

第八章 DOM和浏览器模式

  • 分离关注点
  • DOM 脚本编程
    • DOM访问
    • DOM操作
  • 事件
    • 事件处理
    • 事件委托
  • 长时间运行的脚本
    • setTimeout()
    • Web Workers
  • 远程脚本
    • XMLHttpRequest
    • JSONP
    • Frame和Image加载指示器
  • 部署JavaScript
    • 合并脚本
    • 代码减肥和压缩
    • 过期头
    • 使用CDN
  • 加载策略
    • script标签的位置
    • HTTP 分块
    • 动态插入script标签非阻塞载入脚本
    • 延迟加载
    • 按需加载
    • 预加载
  • 小节

索引

Something went wrong with that request. Please try again.