JavaScript编程精解(原书第2版)的第2版经过全面的更新和修订,覆盖了JavaScript的绝大多数语言特性,涉及Web编程和Node.js服务器编程,以及JavaScript性能优化等。《JavaScript编程精解(原书第2版)》的在线网站提供了所有源代码,你可以通过在线沙箱来编辑、运行代码,并实时查看输出结果。
目录
- 译者序
- 赞誉
- 前言
- 第一部分JavaScript编程语言
- 第1章值、类型和运算符2
- 1.1值2
- 1.2数字3
- 1.3字符串5
- 1.4一元运算符6
- 1.5布尔值6
- 1.6未定义值8
- 1.7自动类型转换8
- 1.8本章小结10
- 第2章程序结构11
- 2.1表达式和语句11
- 2.2变量12
- 2.3关键字和保留字13
- 2.4环境14
- 2.5函数14
- 2.6console.log函数14
- 2.7返回值15
- 2.8prompt和confirm函数15
- 2.9控制流16
- 2.10条件执行16
- 2.11while和do循环17
- 2.12代码缩进19
- 2.13for循环19
- 2.14跳出循环20
- 2.15更新变量的简便方法21
- 2.16switch条件分支21
- 2.17大写22
- 2.18注释22
- 2.19本章小结23
- 2.20习题23
- 第3章函数25
- 3.1定义函数25
- 3.2参数和作用域26
- 3.3嵌套作用域27
- 3.4函数值28
- 3.5符号声明29
- 3.6调用栈29
- 3.7可选参数31
- 3.8闭包31
- 3.9递归32
- 3.10添加新函数35
- 3.11函数及其副作用37
- 3.12本章小结37
- 3.13习题38
- 第4章数据结构:对象和数组39
- 4.1松鼠人39
- 4.2数据集40
- 4.3属性41
- 4.4方法41
- 4.5对象42
- 4.6可变性44
- 4.7松鼠人的记录45
- 4.8计算关联性47
- 4.9对象映射48
- 4.10分析结果49
- 4.11详解数组50
- 4.12字符串及其属性51
- 4.13arguments对象52
- 4.14Math对象53
- 4.15全局对象55
- 4.16本章小结55
- 4.17习题55
- 第5章高阶函数58
- 5.1抽象59
- 5.2数组遍历抽象59
- 5.3高阶函数61
- 5.4参数传递62
- 5.5JSON63
- 5.6数组过滤64
- 5.7使用map函数转换数组65
- 5.8使用reduce进行数据汇总65
- 5.9可组合性66
- 5.10性能开销67
- 5.11曾曾曾曾……祖父67
- 5.12绑定70
- 5.13本章小结70
- 5.14习题71
- 第6章深入理解对象72
- 6.1历史72
- 6.2方法73
- 6.3原型74
- 6.4构造函数75
- 6.5覆盖继承的属性76
- 6.6原型污染77
- 6.7无原型对象79
- 6.8多态79
- 6.9绘制表格80
- 6.10Getter与Setter84
- 6.11继承85
- 6.12instanceof运算符87
- 6.13本章小结87
- 6.14习题88
- 第7章项目实战:构建电子生态
- 系统89
- 7.1定义89
- 7.2描述世界90
- 7.3动物的编程接口91
- 7.4World对象93
- 7.5this及其作用域94
- 7.6赋予生命96
- 7.7动物的爬行动作98
- 7.8更多动物98
- 7.9更逼真的生态系统仿真99
- 7.10动作处理器100
- 7.11充实这个新世界102
- 7.12让虚拟世界生机盎然103
- 7.13习题104
- 第8章处理缺陷与错误105
- 8.1开发人员造成的问题105
- 8.2严格模式106
- 8.3测试107
- 8.4调试108
- 8.5错误传播109
- 8.6异常110
- 8.7异常后清理111
- 8.8选择性捕获112
- 8.9断言114
- 8.10本章小结115
- 8.11习题115
- 第9章正则表达式116
- 9.1创建正则表达式116
- 9.2匹配测试117
- 9.3匹配字符集117
- 9.4部分模式重复118
- 9.5子表达式分组119
- 9.6匹配和分组119
- 9.7日期类型120
- 9.8单词和字符串边界121
- 9.9选项模式122
- 9.10匹配原理122
- 9.11回溯123
- 9.12replace方法125
- 9.13贪婪模式126
- 9.14动态创建RegExp对象127
- 9.15search方法128
- 9.16lastIndex属性128
- 9.17解析INI文件129
- 9.18国际化字符131
- 9.19本章小结131
- 9.20习题132
- 第10章模块134
- 10.1模块的好处134
- 10.2使用函数作为命名空间136
- 10.3使用对象作为接口137
- 10.4与全局作用域分离138
- 10.5将数据作为代码执行138
- 10.6require函数139
- 10.7模块加载过慢的问题140
- 10.8接口设计143
- 10.9本章小结144
- 10.10习题145
- 第11章项目实战:开发编程语言147
- 11.1解析147
- 11.2代码执行器150
- 11.3特殊形式151
- 11.4环境153
- 11.5函数154
- 11.6编译155
- 11.7站在别人的肩膀上155
- 11.8习题156
- 第二部分在浏览器中使用JavaScript
- 第12章浏览器中的JavaScript160
- 12.1网络和Internet160
- 12.2Web161
- 12.3HTML162
- 12.4HTML和JavaScript164
- 12.5沙箱164
- 12.6兼容性与浏览器之争165
- 第13章文档对象模型166
- 13.1文档结构166
- 13.2树167
- 13.3标准168
- 13.4通过树结构访问节点169
- 13.5查找元素170
- 13.6修改文档170
- 13.7创建节点171
- 13.8属性173
- 13.9布局175
- 13.10样式176
- 13.11层叠样式177
- 13.12查询选择器178
- 13.13位置与动画179
- 13.14本章小结181
- 13.15习题181
- 第14章处理事件183
- 14.1事件处理器183
- 14.2事件与DOM节点184
- 14.3事件对象184
- 14.4传播185
- 14.5默认动作186
- 14.6按键事件187
- 14.7鼠标点击188
- 14.8鼠标移动189
- 14.9滚动事件191
- 14.10焦点事件192
- 14.11加载事件192
- 14.12脚本执行时间线193
- 14.13设置定时器193
- 14.14降频194
- 14.15本章小结195
- 14.16习题196
- 第15章项目实战:平台游戏198
- 15.1游戏198
- 15.2实现技术199
- 15.3关卡199
- 15.4读取关卡200
- 15.5活动元素201
- 15.6当封装成为负担203
- 15.7绘图204
- 15.8动作与冲突208
- 15.9活动元素与动作209
- 15.10跟踪按键213
- 15.11运行游戏213
- 15.12习题215
- 第16章使用canvas绘图217
- 16.1SVG217
- 16.2canvas元素218
- 16.3填充与描边219
- 16.4路径220
- 16.5曲线221
- 16.6绘制饼状图224
- 16.7文本225
- 16.8图像225
- 16.9变换227
- 16.10存储与清除图像的变换状态228
- 16.11回到游戏230
- 16.12选择图像接口234
- 16.13本章小结235
- 16.14习题235
- 第17章HTTP协议概述237
- 17.1协议简介237
- 17.2浏览器和HTTP238
- 17.3XMLHttpRequest240
- 17.4发送请求240
- 17.5异步请求241
- 17.6获取XML数据242
- 17.7HTTP沙箱242
- 17.8抽象请求243
- 17.9Promise245
- 17.10运用HTTP247
- 17.11安全和HTTPS247
- 17.12本章小结248
- 17.13习题248
- 第18章表单和表单域250
- 18.1域250
- 18.2聚焦252
- 18.3禁用域252
- 18.4作为整体的表单253
- 18.5文本域254
- 18.6选择框和单选框255
- 18.7选择域256
- 18.8文件域257
- 18.9客户端保存数据259
- 18.10本章小结261
- 18.11习题261
- 第19章项目实战:绘图程序263
- 19.1实现263
- 19.2建立DOM264
- 19.3基础265
- 19.4工具选择265
- 19.5颜色和画刷大小267
- 19.6保存269
- 19.7加载图片文件270
- 19.8完成271
- 19.9习题272
- 第三部分高级主题
- 第20章Node.js276
- 20.1背景276
- 20.2异步性277
- 20.3node命令278
- 20.4模块278
- 20.5使用NPM安装279
- 20.6文件系统模块281
- 20.7HTTP模块282
- 20.8流283
- 20.9简单的文件服务器284
- 20.10错误处理288
- 20.11本章小结290
- 20.12习题290
- 第21章项目实战:技能分享网站293
- 21.1设计293
- 21.2长轮询294
- 21.3HTTP接口295
- 21.4服务器297
- 21.5客户端303
- 21.6习题309
- 第22章JavaScript和性能311
- 22.1分阶段编译311
- 22.2图形布局312
- 22.3定义图313
- 22.4第一个力导向布局函数314
- 22.5性能分析316
- 22.6函数内联317
- 22.7退化回旧式循环318
- 22.8避免工作319
- 22.9产生更少的垃圾319
- 22.10垃圾回收320
- 22.11修改对象321
- 22.12动态类型322
- 22.13本章小结323
- 22.14习题324