目录
第 1章 对象和原型 1
1.1 鸟瞰JavaScript 1
脚本设计 2
1.2 对象概述 3
1.2.1 对象化 3
1.2.2 原型编程 20
1.3 小结 29
第 2章 函数 30
2.1 JavaScript中的代码块 30
2.2 小结 44
第3章 了解闭包 45
3.1 作用域的真相 45
3.1.1 理解this关键字 46
3.1.2 块级作用域 48
3.2 第 一个闭包程序 49
3.3 为什么要用闭包 50
对象工厂 50
3.4 小结 53
第4章 术语和俚语 54
4.1 Jargon.prototype = new Slang() 54
什么是编程术语? 55
4.2 强转 55
4.2.1 转为String 56
4.2.2 转为数字 56
4.2.3 强转的陷阱 57
4.3 逻辑运算符 61
4.3.1 逻辑与(&&) 61
4.3.2 逻辑或(||) 62
4.3.3 逻辑非(!) 62
4.4 位变换 65
4.4.1 按位与(&) 65
4.4.2 按位或(|) 67
4.4.3 按位异或(^) 68
4.4.4 按位非(~) 69
4.4.5 位移操作(<<,>>,>>>) 69
4.5 不易读代码 71
4.5.1 暗中的eval 71
4.5.2 各种进制 71
4.5.3 使用Unicode编码的变量 72
4.5.4 真正的WAT在这里 72
4.6 小结 73
4.7 补充参考资料 74
第5章 异步生活 75
5.1 理解JavaScript中的并发 75
并发 75
5.2 理解JavaScript的事件循环 77
5.2.1 运行到完成 77
5.2.2 事件触发的设计 77
5.2.3 事件循环的内部 77
5.3 回调 79
5.3.1 感知性能 80
5.3.2 连续传递风格 81
5.3.3 回调地狱 82
5.4 Promise:从未来返回 83
使用Promise 84
5.5 生成器和协程 85
5.5.1 生成器 86
5.5.2 协程的约定 88
5.5.3可持续生成器 89
5.6 Web Workers 91
5.6.1 并发 91
5.6.2 知道什么时候做一个工头 91
5.6.3 雇用worker 92
5.7 小结 100
其他资源 100
第6章 JavaScript的IRL 102
6.1 硬件崇拜者日记 102
6.1.1 消防软管 102
6.1.2 每个人都可以玩的硬件 103
6.1.3 了解物理硬件 103
6.2 物理计算 104
物联网 105
6.3 为什么要使用JavaScript 105
6.3.1 搭建桥梁 106
6.3.2 响应式编程范式 106
6.4 NodeBots:快速,廉价和伺服控制 107
6.4.1 REPL 108
6.4.2 为何要多此一举 108
6.4.3 前提条件 109
6.4.4 Arduino IDE 110
6.4.5 Node串行端口 112
6.4.6 Firmata 115
6.4.7 Johnny-Five 118
6.5 Fauxbots 123
6.6 其他资源 123
第7章 风格 124
7.1 什么是风格 124
7.2 什么是编程风格 125
7.2.1 一致性 125
7.2.2 表达能力 125
7.2.3 简洁 125
7.2.4 约束性 126
7.3 JavaScript风格指南 126
7.3.1 视觉清晰度规则 126
7.3.2 计算效率规则 134
7.4 施行代码风格 139
7.4.1 Beautifiers 139
7.4.2 通过IDE执行 140
7.5 小结 142
第8章 工作流程 144
8.1 不要铲雪 144
8.2 什么是工作流程 144
8.3 合理的JavaScript开发流程 145
8.4 工具的选择 145
8.4.1 订购工具 146
8.4.2 依赖关系管理 148
8.4.3 保护升级路径 149
8.5 引导程序 150
8.6 开发 153
CoffeeScript示例 154
8.7 测试 157
8.7.1 如何测试 157
8.7.2 Karma 157
8.7.3 PhantomJS 159
8.7.4 测试什么 160
8.8 构建 163
8.8.1 编译 163
8.8.2 分析 163
8.8.3 拼接 163
8.8.4 优化 163
8.8.5 测试 164
8.8.6 通知 164
8.9 支持 164
8.9.1 JavaScript中的错误报告 165
8.9.2 源码映射 165
8.10 小结 165
第9章 代码质量 167
9.1 定义代码质量 167
9.1.1 主观质量 168
9.1.2 客观质量 168
9.2 如何度量质量 168
9.3 为什么要度量代码质量 169
9.4 度量JavaScript代码质量 170
静态代码分析 170
9.5 小结 188
第 10章 提高可测试性 189
10.1 为什么测试无法测试 189
10.1.1 测试谬论 190
10.1.2 确认偏见 193
10.2 找到基线 195
10.2.1 语句覆盖 196
10.2.2 函数覆盖 197
10.2.3 分支覆盖 197
10.2.4 Istanbul 198
10.2.5 覆盖率偏见 199
10.3 偏见消除测试 200
10.3.1 模糊测试 200
10.3.2 JSCheck 202
10.3.3 自动测试 206
10.4 小结 207