第1章 JavaScript入门 1
1.1 JavaScript极简史 2
1.2 如何阅读本书 2
1.3 Hello World 4
1.3.1 JavaScript概览 5
1.3.2 JavaScript类型 21
1.3.3 自动插入分号 23
1.3.4 JavaScript代码风格指南 25
1.4 小结 33
第2章 函数、闭包与模块 34
2.1 函数的字面形式 34
2.2 函数作为数据 36
2.3 作用域 38
2.3.1 全局作用域 38
2.3.2 局部作用域 39
2.3.3 函数作用域与块作用域 39
2.3.4 行内函数表达式 42
2.3.5 块作用域 42
2.4 函数声明与函数表达式 44
2.5 arguments参数 45
2.6 匿名函数 48
2.6.1 对象创建过程中的匿名函数 48
2.6.2 列表创建过程中的匿名函数 49
2.6.3 作为函数参数的匿名函数 49
2.6.4 出现在条件逻辑中的匿名函数 49
2.7 闭包 50
2.8 计时器和回调函数 52
2.9 私有变量 53
2.10 循环与闭包 53
2.11 模块 54
2.12 小结 55
第3章 数据结构及相关操作 56
3.1 正则表达式 56
3.2 严格匹配 57
3.3 匹配字符组 58
3.4 重复出现 61
3.5 首部与尾部 63
3.6 向后引用 63
3.7 贪婪限定符与惰性限定符 64
3.8 数组 65
3.9 map 71
3.10 set 72
3.11 编码风格 73
3.12 小结 74
第4章 面向对象的JavaScript 75
4.1 理解对象 75
4.1.1 JavaScript对象的行为 77
4.1.2 原型 78
4.2 实例属性与原型属性 79
4.3 继承 83
4.4 接收器与设置器 89
4.5 小结 91
第5章 JavaSc ript模式 92
5.1 设计模式 92
5.2 命名空间模式 94
5.3 模块模式 95
5.4 工厂模式 100
5.5 mixin模式 101
5.6 装饰器模式 102
5.7 观察者模式 104
5.8 JavaScript的Model-View-*模式 106
5.8.1 模型-视图-控制器 106
5.8.2 模型 106
5.8.3 视图 107
5.8.4 控制器 107
5.9 模型-视图-表现器 107
5.10 模型-视图-视图模型 108
5.11 小结 109
第6章 测试与调试 110
6.1 单元测试 111
6.1.1 测试驱动开发 111
6.1.2 行为驱动开发 112
6.2 JavaScript调试 117
6.2.1 语法错误 117
6.2.2 使用严格模式 117
6.2.3 运行时异常 118
6.3 小结 123
第7章 ECMAScript 6 124
7.1 shim/polyfill 124
7.2 转换编译器 125
7.3 ES6语法上的变化 125
7.3.1 块级作用域 125
7.3.2 默认参数 127
7.3.3 spread与rest 127
7.3.4 解构 128
7.3.5 对象字面量 129
7.3.6 模板字面量 130
7.3.7 Map与Set 131
7.3.8 Symbol 133
7.3.9 迭代器 134
7.3.10 for..of循环 134
7.3.11 箭头函数 134
7.4 小结 137
第8章 DOM操作与事件 138
8.1 DOM 138
8.1.1 访问DOM元素 138
8.1.2 访问特定的节点 140
8.2 链式方法 145
8.3 遍历与操作 146
8.4 处理浏览器事件 147
8.5 事件传播 148
8.6 jQuery事件处理及传播 149
8.7 事件委托 151
8.8 事件对象 152
8.9 小结 153
第9章 服务器端JavaScript 154
9.1 浏览器的异步事件模型 154
9.2 回调函数 158
9.3 计时器 160
9.4 EventEmitter 161
9.5 模块 162
9.6 npm 165
9.7 JavaScript性能 166
9.8 小结 169