第1章JavaScript基础 1
1.1 JavaScript概述 1
1.1.1 JavaScript发展历史 1
1.1.2 ECMAScript与JavaScript的关系 1
1.1.3 ECMAScript版本变化 2
1.1.4 ECMAScript5和ECMAScript6 2
1.2 JavaScript相关概念 3
1.2.1 JavaScript核心 3
1.2.2文档对象模型 3
1.2.3浏览器对象模型 5
第2章 初次使用JavaScript 6
2.1在网页中嵌入JavaScript脚本 6
2.1.1编写脚本 6
2.1.2脚本位置 9
2.1.3设置延迟执行 10
2.1.4设置异步响应 10
2.2执行JavaScript程序 11
2.2.1执行过程 11
2.2.2预编译 12
2.2.3代码块 13
2.2.4响应事件 14
2.2.5设计动态脚本 15
第3章 代码测试和错误处理 16
3.1浏览器与JavaScript 16
3.1.1浏览器内核 16
3.1.2浏览器错误报告 16
3.2 JavaScript开发工具 20
3.2.1 JavaScript编辑器 20
3.2.2 JavaScript测试和调试 20
3.2.3使用控制台 23
3.3错误处理 24
3.3.1认识错误类型 25
3.3.2使用try-catch 26
3.3.3使用Finally 27
3.3.4使用throw 28
3.3.5抛出时机 28
3.3.6错误事件 29
第4章JavaScript基本语法 31
4.1基本词法 31
4.1.1字符编码 31
4.1.2区分大小写 32
4.1.3标识符 33
4.1.4直接量 33
4.1.5关键字和保留字 33
4.1.6分隔符 34
4.1.7注释 36
4.1.8转义序列 36
4.2使用变量 36
4.2.1声明变量 36
4.2.2赋值变量 37
4.2.3变量的作用域 38
4.2.4避免变量污染 39
4.3数据类型 40
4.3.1基本数据类型 40
4.3.2数值 40
4.3.3字符串 43
4.3.4布尔值 45
4.3.5 Null 45
4.3.6 Undefined 45
4.4严格模式 46
4.4.1启用严格模式 46
4.4.2严格模式的执行限制 48
4.5实战案例 52
4.5.1使用typeof检测类型 52
4.5.2使用constructor检测类型 53
4.5.3封装类型检测方法:toString() 54
4.5.4转换为字符串 55
4.5.5转换数字模式 57
4.5.6设置数字显示的小数位数 57
4.5.7转换为数字 58
4.5.8转换为布尔值 59
4.5.9转换为对象 60
4.5.10把对象转换为值 61
4.5.11强制转换 62
第5章 使用运算符 64
5.1运算符概述 64
5.2算术运算符 67
5.2.1加法运算 68
5.2.2减法运算 68
5.2.3乘法运算 69
5.2.4除法运算 69
5.2.5余数运算 69
5.2.6取反运算 70
5.2.7递增和递减 70
5.3逻辑运算符 71
5.3.1逻辑与运算符 71
5.3.2逻辑或运算符 72
5.3.3逻辑非运算符 73
5.3.4案例:逻辑运算训练 74
5.4关系运算符 75
5.4.1大小比较 75
5.4.2案例:包含检测 76
5.4.3案例:等值检测 77
5.5赋值运算符 78
5.6对象操作运算符 80
5.6.1 new运算符 80
5.6.2 delete运算符 81
5.6.3中括号和点号运算符 82
5.6.4小括号运算符 84
5.7其他运算符 85
5.7.1条件运算符 85
5.7.2逗号运算符 85
5.7.3 void运算符 86
5.8实战案例 87
5.8.1使用表达式 87
5.8.2连续运算 89
5.8.3把命令转换为表达式 91
5.8.4表达式中的函数 93
第6章 设计程序结构 95
6.1语句概述 95
6.1.1表达式语句 96
6.1.2复合语句 97
6.1.3声明语句 98
6.1.4空语句 98
6.2分支结构 99
6.2.1 if语句 99
6.2.2条件嵌套 100
6.2.3设计分支结构 101
6.2.4 switch语句 103
6.2.5 default从句 104
6.2.6比较if和switch结构 106
6.2.7优化分支结构 107
6.3循环结构 109
6.3.1 while语句 109
6.3.2 do/while语句 110
6.3.3 for语句 111
6.3.4 for/in语句 112
6.3.5比较while和for结构 114
6.3.6优化循环结构 116
6.4结构跳转 118
6.4.1标签语句 118
6.4.2 break语句 118
6.4.3 continue语句 121
6.5实战案例 122
6.5.1提升分支运算性能 122
6.5.2提升循环运算性能 123
6.5.3设计杨辉三角 125
第7章 使用数组 128
7.1定义数组 128
7.1.1构造数组 128
7.1.2数组直接量 129
7.2使用数组 129
7.2.1存取数组元素 129
7.2.2数组长度 130
7.2.3对象与数组 131
7.2.4定义多维数组 133
7.3使用数组对象 134
7.3.1检索数组 134
7.3.2操作元素 134
7.3.3操作子数组 136
7.3.4数组排序 138
7.3.5使用排序函数 139
7.3.6数组与字符串的转换 141
7.3.7定位 142
7.3.8迭代 143
7.3.9汇总 150
7.4实战案例 151
7.4.1快速交换 152
7.4.2数组下标 152
7.4.3扩展数组方法 153
7.4.4设计迭代器 154
7.4.5使用迭代器 156
7.4.6使用数组维度 157
第8章 使用函数 159
8.1定义函数 159
8.1.1声明函数 159
8.1.2构造函数 160
8.1.3函数直接量 160
8.1.4定义嵌套函数 161
8.1.5比较定义函数的方法 162
8.2使用函数 163
8.2.1函数返回值 164
8.2.2调用函数 164
8.2.3函数作用域 165
8.3使用参数 166
8.3.1定义参数 166
8.3.2使用arguments对象 167
8.3.3使用callee回调函数 168
8.3.4应用arguments对象 169
8.4使用函数对象 170
8.4.1获取函数形参个数 171
8.4.2自定义属性 171
8.4.3使用call()和apply() 172
8.4.4使用bind() 175
8.5使用this 177
8.5.1 this用法 177
8.5.2 this安全策略 180
8.5.3应用this 183
8.5.4函数调用模式 185
8.5.5函数的标识符 187
8.6使用闭包函数 188
8.6.1认识闭包函数 189
8.6.2使用闭包 190
8.6.3定义闭包存储器 192
8.6.4在事件处理中应用闭包 194
8.7实战案例 197
8.7.1绑定函数 197
8.7.2链式语法 198
8.7.3函数节流 199
8.7.4分支函数 200
8.7.5惰性载入函数 201
8.7.6惰性求值 202
8.7.7记忆 204
8.7.8构建模块 205
8.7.9柯里化 207
8.7.10高阶函数 208
8.7.11递归运算 210
8.7.12尾递归算法 211
第9章 使用对象 213
9.1创建对象 213
9.1.1使用构造函数创建对象 213
9.1.2使用对象直接量创建对象 214
9.1.3使用create()方法创建对象 216
9.2操作对象 217
9.2.1引用对象 217
9.2.2复制对象 217
9.2.3克隆对象 218
9.2.4销毁对象 219
9.3操作属性 219
9.3.1定义属性 219
9.3.2访问属性 221
9.3.3赋值属性 224
9.3.4删除属性 224
9.3.5使用方法 224
9.3.6配置特性 226
9.3.7检测特性 227
9.4使用方法 227
9.4.1使用toString() 227
9.4.2使用valueOf() 228
9.4.3检测私有属性 229
9.4.4检测枚举属性 230
9.4.5检测原型对象 231
9.4.6静态方法 232
9.5使用原型 234
9.5.1定义原型 234
9.5.2比较原型属性和本地属性 235
9.5.3应用原型 237
9.5.4原型域和原型域链 240
9.5.5原型继承 242
9.5.6扩展原型方法 243
9.6实战案例 244
9.6.1设计工厂模式 244
9.6.2设计类继承 245
9.6.3设计构造原型模式 248
9.6.4设计动态原型模式 248
9.6.5设计实例继承 249
9.6.6惰性实例化 250
9.6.7安全构造对象 252
第10章BOM操作 255
10.1使用window对象 255
10.1.1访问浏览器窗口 255
10.1.2全局作用域 256
10.1.3使用系统测试方法 256
10.1.4打开和关闭窗口 258
10.1.5使用框架集 260
10.1.6控制窗口位置 262
10.1.7控制窗口大小 263
10.1.8使用定时器 264
10.2使用navigator对象 267
10.2.1浏览器检测方法 267
10.2.2检测浏览器类型和版本号 268
10.2.3检测客户操作系统 269
10.2.4检测插件 270
10.3使用location对象 271
10.4使用history对象 273
10.5使用screen对象 273
10.6使用document对象 274
10.6.1访问文档对象 275
10.6.2动态生成文档内容 276
10.7实战案例 277
10.7.1使用远程脚本 277
10.7.2设计远程交互 279
10.7.3使用浮动框架 281
10.7.4封装用户代理检测 283
第11章DOM操作 289
11.1 DOM基础 289
11.2使用节点 291
11.2.1节点类型 291
11.2.2节点名称和值 293
11.2.3节点关系 294
11.2.4访问节点 295
11.2.5 操作节点 298
11.3使用文档节点 300
11.3.1访问文档子节点 300
11.3.2访问文档信息 301
11.3.3访问文档元素 301
11.3.4访问文档集合 302
11.3.5使用HTML5 Document 302
11.4使用元素节点 303
11.4.1访问元素 303
11.4.2遍历元素 304
11.4.3创建元素 306
11.4.4复制节点 307
11.4.5插入节点 308
11.4.6删除节点 310
11.4.7替换节点 312
11.4.8获取焦点元素 312
11.4.9检测包含节点 313
11.5使用文本节点 315
11.5.1访问文本节点 315
11.5.2创建文本节点 316
11.5.3操作文本节点 316
11.5.4读取HTML字符串 317
11.5.5插入HTML字符串 317
11.5.6替换HTML字符串 319
11.5.7插入文本 321
11.6使用文档片段节点 322
11.7使用属性节点 323
11.7.1访问属性节点 323
11.7.2读取属性值 325
11.7.3设置属性值 325
11.7.4删除属性 327
11.7.5使用类选择器 328
11.7.6自定义属性 328
11.8使用范围 329
11.8.1创建范围 329
11.8.2选择范围 330
11.8.3设置范围 334
11.8.4操作范围内容 336
11.8.5插入范围内容 338
11.8.6折叠范围 339
11.8.7比较范围 341
11.8.8复制和清除范围 342
11.9使用CSS选择器 342
11.10实战案例 344
11.10.1设计动态脚本 344
11.10.2使用script加载远程数据 346
11.10.3使用script实现异步交互 348
11.10.4使用JSONP 351
11.10.5设计动态表格 355
11.10.6访问DOM集合 357
11.10.7在微博分享选中文本 359
第12章 事件处理 362
12.1事件基础 362
12.1.1事件模型 362
12.1.2事件流 363
12.1.3事件类型 365
12.1.4绑定事件 367
12.1.5事件处理函数 368
12.1.6注册事件 370
12.1.7销毁事件 371
12.1.8使用event对象 373
12.1.9事件委托 375
12.2使用鼠标事件 377
12.2.1鼠标点击 377
12.2.2鼠标移动 378
12.2.3鼠标经过 380
12.2.4鼠标来源 380
12.2.5鼠标定位 381
12.2.6鼠标按键 384
12.3使用键盘事件 384
12.3.1键盘事件属性 385
12.3.2键盘响应顺序 387
12.4使用页面事件 388
12.4.1页面初始化 388
12.4.2结构初始化 390
12.4.3页面卸载 391
12.4.4窗口重置 392
12.4.5页面滚动 393
12.4.6错误处理 393
12.5使用UI事件 394
12.5.1焦点处理 394
12.5.2选择文本 395
12.5.3字段值变化监测 395
12.5.4提交表单 397
12.5.5重置表单 399
12.5.6剪贴板数据 400
12.6实战案例 401
12.6.1封装事件 401
12.6.2模拟事件 404
12.6.3设计弹出对话框 406
12.6.4设计遮罩层 407
12.6.5自定义事件 408
12.6.6设计事件触发模型 409
12.6.7应用事件模型 411
第13章 使用正则表达式与表单验证 415
13.1正则表达式操作基础 415
13.1.1定义正则表达式 415
13.1.2访问正则表达式对象 417
13.1.3执行匹配操作 418
13.1.4访问匹配信息 419
13.1.5条件检测 421
13.2正则表达式语法基础 422
13.2.1字符描述 422
13.2.2字符范围 423
13.2.3选择操作 424
13.2.4重复类量词 425
13.2.5惰性模式 426
13.2.6边界量词 427
13.2.7声明量词 428
13.2.8表达式分组 428
13.2.9子表达式引用 429
13.3实战案例 431
第14章 字符串处理与表单开发 437
14.1字符串操作基础 437
14.1.1定义字符串 437
14.1.2字符串的值和字符长度 439
14.1.3字符串连接 441
14.1.4字符串查找 441
14.1.5字符串截取 444
14.1.6字符串替换 446
14.1.7字符串大小转换 447
14.1.8字符串比较 447
14.1.9字符串与数组转换 448
14.1.10字符串格式化 449
14.1.11字符编码和解码 449
14.1.12 Unicode编码和解码 451
14.2实战案例 453
14.2.1访问表单对象 453
14.2.2访问表单元素 454
14.2.3访问字段属性 455
14.2.4访问文本框的值 457
14.2.5文本框过滤 459
14.2.6切换焦点 461
14.2.7访问选择框的值 462
14.2.8编辑选项 465
14.2.9字符串替换的高级应用 467
14.2.10字符串修剪 469
14.2.11检测特殊字符 471
14.2.12自定义加密和解密 472
14.2.13表单序列化 474
14.2.14设计文本编辑器 478
第15章CSS脚本化与网页特效 483
15.1 CSS脚本化基础 483
15.1.1访问CSS行内样式 483
15.1.2使用style对象 484
15.1.3使用styleSheets对象 489
15.1.4使用selectorText对象 492
15.1.5编辑样式 493
15.1.6添加样式 493
15.1.7访问计算样式 495
15.2元素大小 498
15.2.1访问CSS宽度和高度 498
15.2.2把值转换为整数 500
15.2.3使用offsetWidth和offset Height 501
15.2.4元素尺寸 503
15.2.5视图尺寸 506
15.2.6窗口尺寸 507
15.3位置偏移 508
15.3.1窗口位置 508
15.3.2相对位置 510
15.3.3定位位置 511
15.3.4设置偏移位置 511
15.3.5设置相对位置 512
15.3.6鼠标指针绝对位置 512
15.3.7鼠标指针相对位置 513
15.3.8滚动条位置 515
15.3.9设置滚动条位置 515
15.4显示隐藏 516
15.4.1可见性 516
15.4.2透明度 517
15.5实战案例 518
15.5.1滑动 518
15.5.2渐隐渐显 519
第16章 使用Ajax实现异步通信 520
16.1使用XML数据 520
16.1.1新建XML文档 520
16.1.2访问XML数据 521
16.1.3创建XML DOM对象 523
16.1.4加载XML数据 524
16.1.5显示XML数据 526
16.1.6案例:在网页中显示XML数据 527
16.1.7案例:异步加载XML数据 529
16.2使用 JSON数据 531
16.2.1 JSON结构 531
16.2.2案例:JSON与XML格式比较 533
16.2.3案例:JSON数据优化 535
16.2.4案例:解析JSON 537
16.2.5案例:序列化JSON 538
16.3使用Ajax 541
16.3.1 HTTP头部信息 541
16.3.2定义XMLHttpRequest对象 543
16.3.3建立XMLHttpRequest连接 545
16.3.4发送GET请求 546
16.3.5发送POST请求 547
16.3.6转换串行化字符串 548
16.3.7跟踪状态 549
16.3.8中止请求 550
16.3.9获取XML数据 550
16.3.10获取HTML文本 551
16.3.11获取JavaScript脚本 552
16.3.12获取JSON数据 552
16.3.13获取纯文本 553
16.3.14获取头部信息 553
16.4实战案例 554
16.4.1封装异步请求操作 554
16.4.2动态显示提示信息 555
16.4.3动态查询记录集 557
16.4.4记录集分页显示 560
16.4.5设计Tab面板 562
16.4.6关键字匹配 565
16.4.7使用灯标 568
第17章 本地数据存储 571
17.1使用cookie 571
17.1.1写入cookie信息 571
17.1.2读取cookie信息 573
17.1.3修改和删除cookie信息 574
17.1.4附加cookie信息 574
17.1.5封装cookie操作 576
17.1.6案例:打字游戏 577
17.2使用Web Storage 579
17.2.1基本操作 580
17.2.2案例:设计网页皮肤 581
17.2.3案例:跟踪localStorage数据 583
17.2.4案例:设计计数器 585
17.3使用Web SQL 586
17.3.1基本操作 586
17.3.2案例:创建本地数据库 588
17.3.3案例:批量存储本地数据 590
17.4实战案例 592
第18章JavaScript图形设计 599
18.1 HTML5 canvas基础 599
18.1.1在页面中插入canvas元素 599
18.1.2绘制图形的基本方法 600
18.1.3使用canvas 601
18.2绘制图形 603
18.2.1绘制直线 603
18.2.2绘制矩形 605
18.2.3 绘制圆形 606
18.2.4绘制多边形 608
18.2.5绘制曲线 609
18.2.6绘制二次方曲线 610
18.2.7绘制三次方曲线 611
18.3设置图形样式 613
18.3.1设置线型 613
18.3.2绘制线性渐变 616
18.3.3绘制径向渐变 617
18.3.4绘制图案 618
18.3.5设置不透明度 619
18.3.6设置阴影 620
18.4操作图形 621
18.4.1保存和恢复canvas状态 621
18.4.2清除绘图 622
18.4.3移动坐标 623
18.4.4旋转坐标 625
18.4.5缩放图形 626
18.4.6变换矩阵 627
18.4.7组合图形 629
18.4.8裁切路径 632
18.5绘制文字 633
18.5.1绘制填充文字 633
18.5.2设置文字属性 634
18.5.3绘制轮廓文字 634
18.5.4测量宽度 635
18.6绘制图像 636
18.6.1导入图像 636
18.6.2变换图像 638
18.6.3裁切图像 639
18.6.4图像平铺 640
18.6.5像素处理 642
18.7实战案例 643
18.7.1设计canvas动画 643
18.7.2保存绘图 646
第19章 离线应用 649
19.1 HTML5离线应用基础 649
19.1.1认识HTML5离线应用 649
19.1.2浏览器支持 650
19.1.3使用manifest文件 651
19.1.4使用离线缓存 654
19.1.5监听离线存储 657
19.2实战案例 659
19.2.1缓存首页 659
19.2.2离线编辑内容 661
19.2.3离线跟踪 666
第20章 多线程处理 671
20.1 Web Workers基础 671
20.1.1认识Web Workers 671
20.1.2浏览器支持 672
20.1.3创建Web Workers 673
20.1.4 Web Workers通信 674
20.1.5案例:使用Web Workers 675
20.2实战案例 678
20.2.1后台运算 678
20.2.2数值过滤 680
20.2.3并发处理 682
20.2.4线程通信 684
20.2.5 Fibonacci数列运算 686
第21章 文件操作 688
21.1访问文件域 688
21.2使用Blob对象 689
21.2.1在文件域中访问Blob对象 689
21.2.2创建Blob对象 691
21.2.3截取Blob对象 693
21.2.4保存Blob对象 694
21.3使用FileReader对象 696
21.3.1读取并显示文件 696
21.3.2监测读取操作 698
21.4使用缓存对象 700
21.4.1使用ArrayBuffer对象 700
21.4.2使用ArrayBufferView对象 700
21.4.3使用DataView对象 701
21.5使用FileSystem 704
21.5.1访问文件系统 704
21.5.2申请配额 706
21.5.3创建文件 710
21.5.4写入文件 712
21.5.5添加数据 713
21.5.6读取文件 715
21.5.7复制文件 716
21.5.8删除文件 717
21.5.9创建目录 718
21.5.10读取目录 720
21.5.11删除目录 722
21.5.12复制目录 723
21.5.13移动和重命名目录 724
21.5.14使用filesystem:URL 726
21.6实战案例 728
第22章 使用History 732
22.1 History API基础 732
22.1.1 History API处理方式 732
22.1.2浏览器兼容和扩展 733
22.1.3操作历史记录 733
22.2实战案例 735
22.2.1设计无刷新页面导航 735
22.2.2设计主题宣传网站 738
22.2.3设计图片画廊 741
22.2.4设计历史恢复 744
第23章 实战案例 748
23.1设计折叠面板 748
23.2设计计算器 752
23.3设计万年历 757
23.4设计俄罗斯方块 765
23.4.1设计游戏界面 766
23.4.2设计游戏模型 767
23.4.3实现游戏功能 769