第1章 JavaScript基础 1
1.1 JavaScript概述 1
1.1.1 JavaScript历史 1
1.1.2 ECMAScript起源 1
1.1.3 ECMAScript版本 2
1.1.4 浏览器支持 2
1.1.5 JavaScript构成 2
1.2 初步使用JavaScript 3
1.2.1 编写第一个程序 3
1.2.2 新建JavaScript文件 4
1.2.3 执行JavaScript程序 4
1.2.4 延迟执行JavaScript文件 5
1.2.5 异步加载JavaScript文件 6
1.2.6 认识JavaScript代码块 6
1.3 在线学习 7
第2章 JavaScript基本语法 8
2.1 基本词法 8
2.1.1 字符编码 8
2.1.2 区分大小写 9
2.1.3 标识符 9
2.1.4 直接量 10
2.1.5 关键字和保留字 10
2.1.6 分隔符 11
2.1.7 注释 12
2.1.8 转义序列 13
2.2 变量 13
2.2.1 声明变量 13
2.2.2 赋值变量 14
2.2.3 变量作用域 14
2.2.4 变量类型 15
2.2.5 变量污染 15
2.3 数据类型 16
2.3.1 基本类型 16
2.3.2 数字 17
2.3.3 字符串 20
2.3.4 布尔型 22
2.3.5 Null 23
2.3.6 Undefined 23
2.4 严格模式 24
2.4.1 启用严格模式 24
2.4.2 严格模式的执行限制 25
2.5 类型检测 25
2.5.1 使用constructor 25
2.5.2 使用toString 26
2.6 类型转换 28
2.6.1 转换为字符串 28
2.6.2 转换为数字模式字符串 30
2.6.3 转换为小数格式字符串 30
2.6.4 转换为数字 31
2.6.5 转换为布尔值 32
2.6.6 转换为对象 33
2.6.7 转换为简单值 33
2.6.8 强制类型转换 35
2.6.9 自动类型转换 35
2.7 在线学习 36
第3章 运算符和表达式 37
3.1 运算符 37
3.1.1 操作数的个数 37
3.1.2 操作数的类型 38
3.1.3 运算符的优先级 38
3.1.4 运算符的结合性 39
3.1.5 左值、赋值及其副作用 39
3.2 算术运算 40
3.2.1 加法运算 40
3.2.2 减法运算 40
3.2.3 乘法运算 41
3.2.4 除法运算 41
3.2.5 求余运算 41
3.2.6 取反运算 41
3.2.7 递增和递减 42
3.3 逻辑运算 42
3.3.1 逻辑与运算 42
3.3.2 逻辑或运算 44
3.3.3 逻辑非运算 45
3.4 关系运算 46
3.4.1 大小比较 46
3.4.2 相等和全等 47
3.5 赋值运算 49
3.6 对象操作运算 50
3.6.1 归属检测 50
3.6.2 删除属性 50
3.7 位运算 51
3.7.1 逻辑位运算 51
3.7.2 移位运算 53
3.8 其他运算 55
3.8.1 条件运算符 55
3.8.2 逗号运算符 56
3.8.3 void运算符 56
3.9 表达式 57
3.9.1 表达式的形式 57
3.9.2 表达式的类型 57
3.9.3 表达式的运算顺序 58
3.9.4 表达式的优化 58
3.10 案例实战 60
3.10.1 使用new 60
3.10.2 使用中括号和点号 60
3.10.3 使用小括号 62
3.10.4 连续运算 62
3.10.5 把命令转换为表达式 64
3.11 在线学习 65
第4章 语句和程序结构 66
4.1 语句 66
4.1.1 语句分类 66
4.1.2 定义语句 66
4.1.3 单句 67
4.1.4 复句 67
4.1.5 空语句 68
4.1.6 表达式语句 68
4.1.7 声明语句 69
4.1.8 调试语句 69
4.1.9 with语句 69
4.2 分支结构 70
4.2.1 if语句 70
4.2.2 else语句 71
4.2.3 switch语句 73
4.2.4 default语句 74
4.3 循环结构 75
4.3.1 while语句 75
4.3.2 do/while语句 76
4.3.3 for语句 77
4.3.4 for/in语句 78
4.4 流程控制 79
4.4.1 label语句 79
4.4.2 break语句 80
4.4.3 continue语句 81
4.5 异常处理 82
4.5.1 try/catch/finally语句 82
4.5.2 throw语句 83
4.6 案例实战 84
4.6.1 优化多分支结构:选择if和switch 84
4.6.2 优化多分支结构:优化思路 85
4.6.3 优化多分支结构:数据映射 86
4.6.4 优化多分支结构:调整分支顺序 87
4.6.5 优化循环结构:选择while和for 88
4.6.6 优化循环结构:优化代码 90
4.6.7 设计杨辉三角 92
4.7 在线学习 93
第5章 操作字符串 94
5.1 字符串操作基础 94
5.1.1 定义字符串 94
5.1.2 字符串的值和长度 96
5.1.3 字符串连接 97
5.1.4 字符串查找 98
5.1.5 字符串截取 101
5.1.6 字符串替换 102
5.1.7 字符串大小转换 103
5.1.8 字符串比较 104
5.1.9 字符串与数组转换 104
5.1.10 字符串格式化 105
5.1.11 清除两侧空字符 106
5.1.12 Unicode编码和解码 106
5.1.13 Base64编码和解码 108
5.2 案例实战 108
5.2.1 字符串智能替换 108
5.2.2 检测特殊字符 110
5.2.3 自定义编码和解码 111
5.2.4 字符串加密和解密 112
5.3 在线学习 113
第6章 使用正则表达式 114
6.1 正则表达式对象 114
6.1.1 定义正则表达式 114
6.1.2 执行匹配 116
6.1.3 执行检测 117
6.1.4 编译正则表达式 118
6.1.5 正则表达式的属性 119
6.1.6 RegExp静态属性 120
6.2 字符模式 121
6.2.1 描述字符 121
6.2.2 描述字符范围 122
6.2.3 选择匹配 123
6.2.4 重复匹配 124
6.2.5 惰性匹配 125
6.2.6 边界量词 126
6.2.7 声明量词 126
6.2.8 子表达式 127
6.2.9 反向引用 127
6.2.10 禁止引用 128
6.3 案例实战 128
6.3.1 设计时间匹配模式 128
6.3.2 设计日期匹配模式 129
6.3.3 设计货币数字匹配模式 129
6.3.4 表单验证 130
6.4 在线学习 131
第7章 使用数组 132
7.1 定义数组 132
7.1.1 构造数组 132
7.1.2 数组直接量 132
7.1.3 多维数组 133
7.1.4 空位数组 134
7.1.5 关联数组 134
7.1.6 伪类数组 135
7.2 访问数组 136
7.2.1 读写数组 136
7.2.2 访问多维数组 137
7.2.3 数组长度 137
7.2.4 使用for迭代 138
7.2.5 使用forEach迭代 138
7.2.6 使用keys迭代 140
7.3 操作数组 140
7.3.1 栈操作 140
7.3.2 队列操作 142
7.3.3 删除元素 143
7.3.4 添加元素 143
7.3.5 截取数组 144
7.3.6 数组排序 145
7.3.7 数组转换 148
7.3.8 元素定位 149
7.3.9 检测数组 150
7.3.10 遍历元素检测 150
7.3.11 映射数组 152
7.3.12 数组过滤 153
7.3.13 数组汇总 154
7.4 案例实战 156
7.4.1 自动初始化数组 156
7.4.2 扩展数组原型方法 157
7.4.3 设计迭代器 158
7.5 在线学习 159
第8章 使用函数 160
8.1 定义函数 160
8.1.1 声明函数 160
8.1.2 构造函数 161
8.1.3 函数直接量 161
8.1.4 定义嵌套函数 162
8.2 调用函数 162
8.2.1 函数调用 162
8.2.2 函数的返回值 163
8.2.3 方法调用 164
8.2.4 使用call和apply调用 164
8.2.5 使用new调用 166
8.3 函数参数 166
8.3.1 形参和实参 166
8.3.2 获取参数个数 167
8.3.3 使用arguments对象 167
8.3.4 使用callee 168
8.3.5 应用arguments对象 168
8.4 函数作用域 169
8.4.1 词法作用域 170
8.4.2 执行上下文和活动对象 170
8.4.3 作用域链 172
8.4.4 this和调用对象 174
8.4.5 比较3种函数的作用域 175
8.4.6 函数的标识符 176
8.5 闭包 177
8.5.1 定义闭包 177
8.5.2 使用闭包 179
8.5.3 闭包的局限性 180
8.6 函数式运算 182
8.6.1 函数合成 182
8.6.2 函数柯里化 184
8.7 高阶函数 186
8.7.1 回调函数 186
8.7.2 单例模式 187
8.7.3 实现AOP 188
8.7.4 函数节流 188
8.7.5 分时函数 189
8.7.6 惰性载入函数 190
8.7.7 分支函数 191
8.7.8 徧函数 192
8.7.9 泛型函数 193
8.7.10 类型检测 194
8.8 递归函数 194
8.8.1 递归运算 195
8.8.2 尾递归 196
8.8.3 递归与迭代 197
8.9 在线学习 198
第9章 使用对象 199
9.1 定义对象 199
9.1.1 构造对象 199
9.1.2 对象直接量 199
9.1.3 使用Object.create 200
9.2 操作对象 201
9.2.1 引用对象 202
9.2.2 复制对象 202
9.2.3 克隆对象 202
9.2.4 销毁对象 203
9.3 操作属性 203
9.3.1 定义属性 203
9.3.2 读写属性 204
9.3.3 删除属性 206
9.3.4 使用方法 206
9.3.5 对象与数组 207
9.4 属性描述对象 207
9.4.1 属性描述对象的结构 208
9.4.2 访问器 209
9.4.3 操作属性描述对象 210
9.4.4 控制对象状态 211
9.5 Object原型方法 211
9.5.1 使用toString() 212
9.5.2 使用valueOf() 212
9.5.3 检测私有属性 213
9.5.4 检测枚举属性 214
9.5.5 检测原型对象 215
9.6 Object静态函数 216
9.6.1 对象包装函数 216
9.6.2 对象构造函数 217
9.6.3 静态函数 217
9.7 案例实战 217
9.7.1 生成指定范围的随机数和字符串 217
9.7.2 数字取整 218
9.7.3 设计时间显示牌 218
9.7.4 设计倒计时 220
9.8 在线学习 220
第10章 构造函数、原型和继承 221
10.1 构造函数 221
10.1.1 定义构造函数 221
10.1.2 调用构造函数 222
10.1.3 构造函数的返回值 223
10.1.4 引用构造函数 223
10.2 this指针 223
10.2.1 使用this 224
10.2.2 this安全策略 226
10.2.3 绑定函数 228
10.2.4 使用bind 229
10.2.5 链式语法 230
10.3 原型 231
10.3.1 定义原型 231
10.3.2 访问原型 232
10.3.3 设置原型 233
10.3.4 检测原型 233
10.3.5 原型属性和私有属性 233
10.3.6 应用原型 236
10.3.7 原型链 238
10.3.8 原型继承 240
10.3.9 扩展原型方法 241
10.4 类型 242
10.4.1 构造原型 242
10.4.2 动态原型 243
10.4.3 工厂模式 243
10.4.4 类继承 244
10.5 模块化 247
10.6 案例实战 249
10.6.1 定义类型 249
10.6.2 返回jQuery对象 249
10.6.3 设计作用域 251
10.6.4 跨域访问 252
10.6.5 设计选择器 253
10.6.6 设计迭代器 254
10.6.7 设计扩展 255
10.6.8 传递参数 257
10.6.9 设计独立空间 260
10.7 在线学习 261
第11章 BOM操作 262
11.1 window对象 262
11.1.1 全局作用域 262
11.1.2 访问客户端对象 262
11.1.3 使用系统对话框 263
11.1.4 打开和关闭窗口 265
11.1.5 使用定时器 266
11.1.6 使用框架集 268
11.1.7 控制窗口大小和位置 270
11.2 navigator对象 271
11.2.1 浏览器检测方法 271
11.2.2 检测浏览器类型和版本号 272
11.2.3 检测操作系统 273
11.3 location对象 273
11.4 history对象 275
11.4.1 操作历史记录 275
11.4.2 案例:设计无刷新导航 277
11.5 screen对象 279
11.6 document对象 279
11.6.1 访问文档对象 280
11.6.2 动态生成文档内容 281
11.7 案例实战 282
11.7.1 使用框架设计远程脚本 282
11.7.2 使用框架设计远程交互 284
11.7.3 使用浮动框架设计异步通信 286
11.7.4 设计无刷新图片预览 288
11.7.5 设计可回退的画板 290
11.8 在线学习 292
第12章 DOM操作 293
12.1 DOM基础 293
12.2 节点概述 294
12.2.1 节点类型 294
12.2.2 节点名称和值 296
12.2.3 节点关系 297
12.2.4 访问节点 298
12.2.5 操作节点 300
12.3 文档节点 301
12.3.1 访问文档 301
12.3.2 访问子节点 301
12.3.3 访问特殊元素 302
12.3.4 访问元素集合 302
12.3.5 访问文档信息 302
12.3.6 访问文档元素 303
12.4 元素节点 303
12.4.1 访问元素 303
12.4.2 遍历元素 304
12.4.3 创建元素 304
12.4.4 复制节点 305
12.4.5 插入节点 305
12.4.6 删除节点 307
12.4.7 替换节点 308
12.5 文本节点 309
12.5.1 创建文本节点 309
12.5.2 访问文本节点 309
12.5.3 读取HTML字符串 310
12.5.4 插入HTML字符串 310
12.5.5 替换HTML字符串 311
12.5.6 读写文本 312
12.6 属性节点 313
12.6.1 创建属性节点 313
12.6.2 读取属性值 314
12.6.3 设置属性值 315
12.6.4 删除属性 316
12.6.5 使用类选择器 317
12.6.6 自定义属性 318
12.7 文档片段节点 319
12.8 CSS选择器 319
12.9 案例实战 320
12.9.1 使用script加载远程数据 320
12.9.2 使用JSONP 321
12.10 在线学习 325
第13章 事件处理 326
13.1 事件基础 326
13.1.1 事件模型 326
13.1.2 事件流 326
13.1.3 绑定事件 328
13.1.4 事件处理函数 329
13.1.5 注册事件 330
13.1.6 销毁事件 332
13.1.7 使用event对象 334
13.1.8 事件委托 336
13.2 使用鼠标事件 337
13.2.1 鼠标点击 338
13.2.2 鼠标移动 338
13.2.3 鼠标经过 340
13.2.4 鼠标来源 341
13.2.5 鼠标定位 341
13.2.6 鼠标按键 344
13.3 使用键盘事件 345
13.3.1 键盘事件属性 345
13.3.2 键盘响应顺序 347
13.4 使用页面事件 348
13.4.1 页面初始化 348
13.4.2 结构初始化 350
13.4.3 页面卸载 351
13.4.4 窗口重置 352
13.4.5 页面滚动 353
13.4.6 错误处理 353
13.5 使用UI事件 354
13.5.1 焦点处理 354
13.5.2 选择文本 355
13.5.3 字段值变化监测 355
13.5.4 提交表单 357
13.5.5 重置表单 359
13.5.6 剪贴板数据 359
13.6 案例实战 361
13.6.1 自定义事件 361
13.6.2 模拟事件 361
13.7 在线学习 361
第14章 脚本化CSS 362
14.1 CSS脚本化基础 362
14.1.1 读写行内样式 362
14.1.2 使用style对象 363
14.1.3 使用styleSheets对象 365
14.1.4 使用selectorText对象 366
14.1.5 编辑样式 367
14.1.6 添加样式 367
14.1.7 读取显示样式 369
14.1.8 读取媒体查询 371
14.1.9 使用CSS事件 372
14.2 设计大小 373
14.2.1 使用offsetWidth和offsetHeight 373
14.2.2 使用scrollLeft和scrollTop 374
14.2.3 获取元素大小 374
14.2.4 获取窗口大小 376
14.3 设计位置 377
14.3.1 使用offsetLeft和offsetTop 377
14.3.2 使用offsetParent 378
14.3.3 获取指针的页面位置 378
14.3.4 获取指针的相对位置 379
14.3.5 获取滚动条的位置 380
14.3.6 设置滚动条位置 381
14.4 设计显隐 381
14.4.1 显示和隐藏 381
14.4.2 半透明显示 382
14.5 设计动画 382
14.5.1 移动动画 382
14.5.2 渐隐渐显 383
14.6 案例实战 384
14.6.1 设计缓动动画 384
14.6.2 设计工具提示 384
14.7 在线学习 384
第15章 脚本化HTTP 385
15.1 XMLHttpRequest基础 385
15.1.1 创建XMLHttpRequest对象 385
15.1.2 建立连接 386
15.1.3 发送GET请求 386
15.1.4 发送POST请求 387
15.1.5 串行格式化数据 387
15.1.6 异步响应状态 388
15.1.7 中止请求 389
15.1.8 获取XML数据 389
15.1.9 获取HTML字符串 390
15.1.10 获取JavaScript脚本 391
15.1.11 获取JSON数据 391
15.1.12 获取纯文本 392
15.1.13 获取和设置头部消息 393
15.1.14 认识XMLHttpRequest 2.0 393
15.1.15 请求时限 393
15.1.16 FormData数据对象 394
15.1.17 上传文件 394
15.1.18 跨域访问 394
15.1.19 响应不同类型数据 395
15.1.20 接收二进制数据 395
15.1.2 1 监测数据传输进度 395
15.2 案例实战 396
15.2.1 接收ArrayBuffer对象 396
15.2.2 接收Blob对象 399
15.2.3 接收字符串 399
15.2.4 发送表单数据 400
15.2.5 发送二进制文件 401
15.2.6 发送Blob对象 402
15.2.7 跨域请求 403
15.2.8 设计文件上传和显示进度条 404
15.2.9 使用灯标 407
15.3 在线学习 409
第16章 JavaScript文件操作 410
16.1 访问文件域 410
16.2 使用Blob对象 411
16.2.1 访问Blob 411
16.2.2 创建Blob 412
16.2.3 截取Blob 414
16.2.4 保存Blob 415
16.3 使用FileReader对象 416
16.3.1 读取文件 416
16.3.2 事件监测 418
16.4 使用缓存对象 419
16.4.1 使用ArrayBuffer 420
16.4.2 使用ArrayBufferView 420
16.4.3 使用DataView 421
16.5 使用FileSystem API 424
16.5.1 认识FileSystem API 424
16.5.2 访问FileSystem 424
16.5.3 申请配额 425
16.5.4 创建文件 429
16.5.5 写入数据 431
16.5.6 添加数据 432
16.5.7 读取数据 433
16.5.8 复制文件 434
16.5.9 删除文件 435
16.5.10 创建目录 436
16.5.11 读取目录 439
16.5.12 删除目录 440
16.5.13 复制目录 441
16.5.14 重命名目录 442
16.5.15 使用filesystem:URL 443
16.6 案例;设计文件管理器 445
16.7 在线学习 445
第17章 JavaScript绘图 446
17.1 使用canvas 446
17.2 绘制图形 447
17.2.1 矩形 448
17.2.2 路径 448
17.2.3 直线 450
17.2.4 圆弧 450
17.2.5 二次方曲线 452
17.2.6 三次方曲线 453
17.3 定义样式和颜色 455
17.3.1 颜色 455
17.3.2 不透明度 456
17.3.3 实线 457
17.3.4 虚线 459
17.3.5 线性渐变 459
17.3.6 径向渐变 460
17.3.7 图案 461
17.3.8 阴影 462
17.3.9 填充规则 462
17.4 图形变形 463
17.4.1 保存和恢复状态 463
17.4.2 清除画布 464
17.4.3 移动坐标 465
17.4.4 旋转坐标 466
17.4.5 缩放图形 467
17.4.6 变换图形 468
17.5 图形合成 469
17.5.1 合成 469
17.5.2 裁切 470
17.6 绘制文本 471
17.6.1 填充文字 471
17.6.2 轮廓文字 472
17.6.3 文本样式 473
17.6.4 测量宽度 475
17.7 使用图像 475
17.7.1 导入图像 475
17.7.2 缩放图像 477
17.7.3 裁切图像 477
17.7.4 平铺图像 478
17.8 像素操作 479
17.8.1 认识ImageData对象 479
17.8.2 创建图像数据 479
17.8.3 将图像数据写入画布 479
17.8.4 在画布中复制图像数据 480
17.8.5 保存图片 481
17.9 案例实战 482
17.9.1 设计基本动画 482
17.9.2 颜色选择器 483
17.9.3 给图像去色 483
17.9.4 缩放图像和反锯齿处理 484
17.9.5 设计运动动画 484
17.9.6 设计地球和月球公转动画 484
17.10 在线学习 485
第18章 本地数据存储 486
18.1 HTTP Cookie 486
18.1.1 写入cookie 486
18.1.2 读取cookie 488
18.1.3 修改和删除cookie 488
18.1.4 附加cookie 489
18.1.5 Http-Only Cookie 490
18.1.6 案例:打字游戏 490
18.2 Web Storage 491
18.2.1 使用Web Storage 492
18.2.2 案例:访问统计 493
18.3 Web SQL Database 494
18.3.1 使用Web SQL Database 494
18.3.2 案例:设计用户登录 498
18.4 IndexedDB 500
18.4.1 使用IndexedDB 500
18.4.2 案例:设计便签 504
18.5 在线学习 505
第19章 多线程处理 506
19.1 Web Workers基础 506
19.1.1 认识Web Workers 506
19.1.2 使用Web Workers 507
19.1.3 案例:设计多线程运算 509
19.2 案例实战 511
19.2.1 并发运算 511
19.2.2 后台过滤 513
19.2.3 设计多线程处理 514
19.2.4 并发通信 516
19.2.5 计算斐波那契数列 517
19.3 在线学习 518
第20章 离线应用 519
20.1 HTML5离线应用基础 519
20.1.1 认识HTML5离线应用 519
20.1.2 使用manifest文件 519
20.1.3 使用离线缓存 521
20.1.4 监听在线状态 523
20.2 案例实战 525
20.2.1 缓存网站 525
20.2.2 离线编辑内容 527
20.3 在线学习 530
第21章 JavaScript通信 531
21.1 postMessage 531
21.1.1 postMessage基础 531
21.1.2 案例:设计跨域动态对话 532
21.2 WebSocket 535
21.2.1 WebSocket基础 535
21.2.2 案例:设计WebSocket通信 538
21.2.3 案例:向会员推送信息 541
21.3 在线学习 544
第22章 拖放操作 545
22.1 拖放API基础 545
22.2 案例实战 547
22.2.1 删除项目 547
22.2.2 拖选对象 550
22.3 在线学习 551
第23章 移动定位 552
23.1 Geolocation API基础 552
23.2 案例实战 553
23.2.1 手机定位位置 553
23.2.2 获取经纬度及其详细地址 555
23.2.3 输入提示查询位置 556
23.2.4 从当前位置查询指定位置路线 557
23.2.5 记录行踪路线 558
23.3 在线学习 561
第24章 帧动画和DOM观察器 562
24.1 requestAnimationFrame 562
24.1.1 认识requestAnimationFrame 562
24.1.2 案例:设计进度条 563
24.1.3 案例:设计旋转的小球 564
24.2 Mutation Observer 565
24.2.1 认识Mutation Observer 565
24.2.2 案例:观察DOM元素 567
24.2.3 案例:观察DOM属性 568
24.3 在线学习 568
第25章 全屏和隐藏显示处理 569
25.1 页面可见处理 569
25.1.1 Page Visibility基础 569
25.1.2 案例:视频暂停与自动播放 571
25.2 全屏显示处理 572
25.2.1 Fullscreen API基础 572
25.2.2 案例:全屏视频播放 574
25.3 在线学习 575
附:综合案例(电子版,手机扫码阅读) 576