第一部分 Java Script基础 3
第1章 JavaScript简介 3
1.1 Web脚本编程基础 3
1.2 服务器端与客户端编程 4
1.3 JavaScript简介 4
1.4 JavaScript起源 5
浏览器战争 5
1.5 <script>标签 6
1.6 DOM简介 7
1.6.1 W3C和标准兼容 7
1.6.2 window和document对象 7
1.6.3 对象表示法 8
1.7 与用户交互 9
1.7.1 window.alert() 9
1.7.2 document.write() 10
1.7.3 读取document对象的属性 11
1.8 小结 12
1.9 问答 12
1.10 作业 12
1.10.1 测验 12
1.10.2 答案 13
1.11 练习 13
第2章 创建简单的脚本 14
2.1 在Web页面里添加JavaScript 14
2.2 JavaScript语句 16
代码注释 16
2.3 变量 17
2.4 操作符 18
2.4.1 算术操作符 18
2.4.2 操作符优先级 19
2.4.3 对字符串使用操作符“+” 19
2.5 捕获鼠标事件 20
2.5.1 onClick事件处理器 21
2.5.2 onMouseOver知onMouseOut事件处理器 22
2.6 小结 24
2.7 问答 24
2.8 作业 24
2.8.1 测验 24
2.8.2 答案 25
2.9 练习 25
第3章 使用函数 26
3.1 基本语法 26
3.2 调用函数 27
把JavaScript代码放置到页面的<head>区域 27
3.3 给函数传递参数 28
多参数 29
3.4 从函数返回值 31
3.5 变量作用域 32
3.6 小结 33
3.7 问答 34
3.8 作业 34
3.8.1 测验 34
3.8.2 答案 34
3.9 练习 35
第二部分 JavaScript编程 39
第4章 DOM对象和内置对象 39
4.1 与用户交互 39
4.1.1 alert() 40
4.1.2 confirm() 40
4.1.3 prompt() 40
4.2 根据id选择元素 41
innerHTML属性 41
4.3 访问浏览器历史记录 42
4.4 使用location对象 42
4.4.1 使用location对象导航 43
4.4.2 刷新页面 43
4.5 浏览器信息:navigator对象 43
4.6 日期和时间 45
4.6.1 创建具有当前日期和时间的Date对象 45
4.6.2 创建具有指定日期和时间的Date对象 45
4.6.3 设置和编辑日期与时间 46
4.7 利用Math对象简化运算 46
4.7.1 取整 47
4.7.2 获得最大值和最小值 47
4.7.3 随机数 47
4.7.4 数学常数 48
4.7.5 关键字with 48
4.8 小结 50
4.9 问答 51
4.10 作业 51
4.10.1 测验 51
4.10.2 答案 52
4.11 练习 52
第5章 数字和字符串 53
5.1 数值 53
5.1.1 整数 54
5.1.2 浮点数 54
5.1.3 非数值(NaN) 54
5.1.4 使用parseFloat()和parseInt() 55
5.1.5 无穷大(Infinity) 55
5.2 字符串 55
5.2.1 转义序列 55
5.2.2 字符串方法 56
5.3 布尔值 58
“非”操作符(!) 60
5.4 小结 60
5.5 问答 61
5.6 作业 61
5.6.1 测验 61
5.6.2 答案 61
5.7 练习 62
第6章 数组 63
6.1 数组 63
6.1.1 创建新数组 63
6.1.2 初始化数组 64
6.1.3 数组的方法 64
6.2 小结 67
6.3 问答 67
6.4 作业 68
6.4.1 测验 68
6.4.2 答案 68
6.5 练习 68
第7章 程序控制 69
7.1 条件语句 69
7.1.1 if()语句 69
7.1.2 比较操作符 70
7.1.3 测试相等性 72
7.1.4 if进阶 73
7.1.5 测试多个条件 73
7.1.6 switch语句 74
7.1.7 逻辑操作符 74
7.2 循环和控制结构 75
7.2.1 while 75
7.2.2 do...while 75
7.2.3 for 76
7.2.4 使用break跳出循环 76
7.2.5 利用for...in在对象集里循环 77
7.3 设置和使用定时器 78
7.4 小结 78
7.5 问答 79
7.6 作业 79
7.6.1 测验 79
7.6.2 答案 79
7.7 练习 80
第三部分 对象 83
第8章 面向对象编程 83
8.1 什么是面向对象编程(OOP) 83
8.2 创建对象 84
8.2.1 创建直接实例 85
8.2.2 使用关键字this 85
8.2.3 匿名函数 87
8.2.4 使用构造函数 87
8.2.5 对象实例化 88
8.2.6 构造函数参数 89
8.3 使用prototype扩展和继承对象 90
8.3.1 扩展对象 90
8.3.2 继承 91
8.4 封装 93
8.5 使用功能检测 93
8.6 小结 94
8.7 问答 95
8.8 作业 95
8.8.1 测验 95
8.8.2 答案 95
8.9 练习 96
第9章 遍历DOM 97
9.1 DOM节点 98
9.1.1 节点类型 99
9.1.2 childNodes属性 100
9.1.3 firstChild和lastChild 101
9.1.4 parentNode属性 101
9.1.5 nextSibling和previousSibling 101
9.1.6 节点值 102
9.1.7 节点名称 102
9.2 利用getElementsByTagName()选择元素 102
9.3 读取元素的属性 104
9.4 Mozilla的DOM查看器 105
9.4.1 创建节点 105
9.4.2 操作子节点 107
9.4.3 编辑元素属性 110
9.4.4 动态加载JavaScript文件 110
9.5 小结 115
9.6 问答 115
9.7 作业 115
9.7.1 测验 116
9.7.2 答案 116
9.8 练习 117
第10章 JSON简介 118
10.1 JSON是什么 118
JSON语法 119
10.2 访问JSON数据 119
10.2.1 使用eval() 120
10.2.2 使用浏览器对JSON 直接支持 120
10.3 JSON的数据序列化 121
10.4 JSON数据类型 122
10.5 模拟关联数组 123
10.6 使用JSON创建对象 123
10.6.1 属性 124
10.6.2 方法 124
10.6.3 数组 125
10.6.4 对象 125
10.7 JSON安全性 127
10.8 小结 127
10.9 问答 127
10.10 作业 127
10.10.1 测验 127
10.10.2 答案 128
10.11 练习 128
第四部分 HTML与CSS 131
第11章 HTML5与JavaScript 131
11.1 HTML5的新标签 132
11.2 一些重要的新元素 132
11.2.1 使用<video>回放视频 132
11.2.2 利用canPlayType()测试可用的格式 133
11.2.3 控制回放 134
11.2.4 用<audio>标签播放声音 134
11.2.5 利用<canvas>在页面上绘图 135
11.3 拖放 137
11.4 本地存储 140
11.5 操作本地文件 140
查看浏览器的支持情况 140
11.6 小结 142
11.7 回答 143
11.8 作业 143
11.8.1 测验 143
11.8.2 答案 143
11.9 练习 144
第12章 JavaScript和CSS 145
12.1 CSS简介 145
12.1.1 从内容分离样式 146
12.1.2 CSS样式声明 146
12.1.3 在哪里保存样式声明 147
12.2 DOM的style属性 147
12.3 使用className访问类 150
12.4 DOM的styleSheets对象 152
启用、禁用和切换样式表 152
12.5 小结 156
12.6 问答 156
12.7 作业 156
12.7.1 测验 157
12.7.2 答案 157
12.8 练习 157
第13章 CSS3简介 158
13.1 特定厂商的属性和前缀 158
13.2 CSS3边框 159
13.2.1 创建边框阴影 160
13.2.2 用border-radius属性实现圆角 160
13.3 CSS3背景 161
13.3.1 background-size属性 161
13.3.2 background-origin属性 162
13.3.3 多背景图像 162
13.4 CSS3渐变 163
13.4.1 线性渐变 163
13.4.2 放射渐变 164
13.5 CSS3文本效果 165
13.5.1 文本阴影 165
13.5.2 单词换行 165
13.6 CSS3过渡、变换和动画 165
13.7 在JavaScript中引用CSS3属性 166
13.7.1 将CSS属性名转换到JavaScript中 166
13.7.2 DOM getComputed Style()方法 167
13.8 设置带有厂商前缀的CSS3属性 168
13.9 小结 169
13.10 问答 169
13.11 作业 170
13.11.1 测验题 170
13.11.2 答案 170
13.12 练习 170
第五部分 使用Java Script库 173
第14章 库 173
14.1 为什么要使用库 173
14.2 库能做什么 174
14.3 常见的库 174
14.3.1 Prototype框架 174
14.3.2 Dojo 175
14.3.3 Yahoo!UI 175
14.3.4 MooTools 175
14.3.5 jQuery 175
14.4 prototype.js介绍 175
14.4.1 $()函数 176
14.4.2 $F()函数 176
14.4.3 Form对象 176
14.5 小结 178
14.6 问答 179
14.7 作业 179
14.7.1 测验 179
14.7.2 答案 179
14.8 练习 180
第15章 jQuery入门 181
15.1 在页面里引用jQuery 181
15.1.1 下载jQuery 182
15.1.2 使用远程方式 182
15.2 jQuery的$(document).ready处理器 182
15.3 选择页面元素 183
15.4 操作HTML内容 183
15.5 显示和隐藏元素 184
15.6 元素动画 185
15.6.1 淡入淡出 185
15.6.2 滑动 186
15.6.3 动画 186
15.7 命令链 186
15.8 处理事件 189
15.9 小结 190
15.10 问答 190
15.11 作业 190
15.11.1 测验 190
15.11.2 答案 191
15.12 练习 191
第16章 jQuery UI库 192
16.1 jQuery UI是什么 192
16.2 如何在页面里引用jQuery UI 193
使用ThemeRoller 193
16.3 交互 193
16.3.1 拖和放 193
16.3.2 调整大小 196
16.3.3 排序 197
16.4 使用微件 198
16.4.1 可折叠控件 198
16.4.2 日期拾取器 199
16.4.3 选项卡 200
16.5 小结 202
16.6 问答 202
16.7 作业 202
16.7.1 测验 202
16.7.2 答案 202
16.8 练习 203
第17章 Ajax和jQuery 204
17.1 Ajax解析 204
17.1.1 Ajax入门 205
17.1.2 XMLHttpRequest对象 205
17.1.3 不同浏览器的不同规则 205
17.1.4 方法和属性 206
17.1.5 与服务器通信 206
17.1.6 在服务器端发生了什么 207
17.1.7 处理服务器响应 207
17.2 使用jQuery实现Ajax 207
17.3 小结 210
17.4 问答 210
17.5 作业 211
17.5.1 测验 211
17.5.2 答案 211
17.6 练习 211
第六部分 高级话题 215
第18章 读取和写入cookie 215
18.1 什么是cookie 215
cookie的局限 216
18.2 document.cookie属性 216
数据的编码和解码 216
18.3 cookie组成 217
18.4 编写cookie 218
18.5 编写cookie的函数 218
18.6 读取cookie 220
18.7 删除cookie 221
18.8 在一个cookie里设置多个值 224
18.9 小结 225
18.10 问答 225
18.11 作业 225
18.11.1 测验 225
18.11.2 答案 226
18.12 练习 226
第19章 JavaScript新功能 227
19.1 类 227
19.2 箭头函数 228
19.3 模块 229
19.4 使用let和const 230
19.5 模板字符串 232
19.6 使用for-of访问数组 232
19.7 Transpilation 233
19.8 小结 233
19.9 问答 233
19.10 作业 233
19.10.1 测验 234
19.10.2 答案 234
19.11 练习 234
第20章 使用框架 235
20.1 软件框架 235
20.1.1 为何要使用框架 235
20.1.2 框架和库不同 236
20.2 模型-视图-控制器(MVC)架构 236
20.2.1 模型 236
20.2.2 视图 236
20.2.3 控制器 236
20.3 针对Web APP使用MVC框架 237
20.4 AngularJS框架 237
20.4.1 AngularJS概览 237
20.4.2 在页面中包含AngularJS 237
20.4.3 用ng-指令扩展HTML 238
20.4.4 作用域 239
20.4.5 指令 239
20.4.6 表达式 240
20.4.7 过滤器 240
20.4.8 给指令添加一个过滤器 241
20.5 构建一个AngularJS应用程序 241
20.6 小结 244
20.7 问答 245
20.8 作业 245
20.8.1 测验 245
20.8.2 答案 245
20.9 练习 246
第21章 Web页面之外的JavaScript 247
21.1 浏览器之外的JavaScript 247
21.2 编写Google Chrome扩展 248
21.2.1 建立简单的扩展程序 248
21.2.2 调试扩展程序 250
21.3 下一步 255
21.4 小结 255
21.5 问答 255
21.6 作业 255
21.6.1 测验 255
21.6.2 答案 256
21.7 练习 256
第七部分 专业技能 259
第22章 良好的编程习惯 259
22.1 避免过度使用JavaScript 259
22.2 编写易读和易维护的代码 260
22.2.1 明智地使用注释 260
22.2.2 使用适当的文件名称、属性名称和方法名称 261
22.2.3 尽量复用代码 261
22.2.4 不要假设 262
22.3 平稳退化 262
22.4 渐进增强 263
分离样式、内容和代码 263
22.5 代码分离的JavaScript 264
22.5.1 脱离HTML 264
22.5.2 仅把JavaScript作为性能增强手段 264
22.6 功能检测 265
22.7 妥善处理错误 266
使用trv和catch 266
22.8 小结 269
22.9 问答 269
22.10 作业 270
22.10.1 测验 270
22.10.2 答案 270
22.11 练习 270
第23章 调试代码 271
23.1 调试简介 271
23.1.1 错误类型 271
23.1.2 选择程序员的编辑器 272
23.1.3 使用alert()进行简单调试 272
23.2 更高级的调试 273
23.2.1 控制台 273
23.2.2 分组消息 279
23.2.3 使用断点停止代码执行 280
23.2.4 条件性断点 281
23.2.5 从代码中启动调试器 281
23.2.6 监视表达式 282
23.2.7 验证JavaScript 282
23.3 小结 282
23.4 问答 282
23.5 作业 283
23.5.1 测验 283
23.5.2 答案 283
23.6 练习 283
第24章 JavaScript单元测试 284
24.1 什么是单元测试 284
24.2 编写JavaScript进行单元测试 287
重构代码 287
24.3 QUnit测试套件 287
24.3.1 安装QUnit 288
24.3.2 最小化的QUnit安装 288
24.3.3 重新测试addTax()函数 289
24.4 小结 290
24.5 问答 290
24.6 作业 291
24.6.1 测验 291
24.6.2 答案 291
24.7 练习 291
第八部分 Java Script游戏编程 295
第25章 用JavaScript编写Minecraft模组 295
25.1 什么是Minecraft模组 296
ScriptCraft 296
25.2 安装一个CanaryMod服务器 296
25.2.1 测试CanaryMod服务器 297
25.2.2 安装ScriptCraft 298
25.2.3 连接到服务器 298
25.3 “Modolith”——你的第一个 Minecraft模组 299
25.4 ScriptCraftdrone 300
25.4.1 移动drone 300
25.4.2 构建一个小木屋 301
25.5 用ScriptCrafi创建一个JS插件 301
25.6 使用事件编程 304
25.7 小结 305
25.8 问答 305
25.9 作业 306
25.9.1 测验 306
25.9.2 答案 306
25.10 练习 306
第26章 使用EaselJS进行游戏编程 307
26.1 EaselJS简介 307
26.1.1 下载EaselJS 308
26.1.2 在你的页面中包含EaselJS 308
26.2 舞台 308
26.2.1 设置舞台 308
26.2.2 Text对象 308
26.2.3 图像 309
26.2.4 更新舞台 309
26.3 渲染画布 309
26.4 对图像实现动画 311
26.4.1 Ticker对象 311
26.4.2 创建tick()函数 311
26.4.3 处理键盘输入 313
26.4.4 添加炮弹 313
26.4.5 一些游戏逻辑 314
26.4.6 最终游戏代码 318
26.4.7 进一步改进游戏 321
26.5 小结 321
26.6 问答 321
26.7 作业 322
26.7.1 测验 322
26.7.2 答案 322
26.8 练习 322
附录A JavaScript开发工具 323
A.1 编辑器 323
A.1.1 Notepad++ 323
A.1.2 jEdit 323
A.1.3 SciTE 324
A.1.4 Geany 324
A.2 验证程序 324
A.2.1 W3C验证服务 324
A.2.2 Web设计组(WDG) 324
A.3 调试与检验工具 324
A.3.1 Firebug 325
A.3.2 JSLint 325
附录B JavaScript快速参考 326