书海网短评:
世JavaScript之父BrendanEich高度评价并强力推荐JavaScript编程原理与运用规则完美融合,读者将在游戏式开发中学会JavaScript程序设计,是系统学习JavaScript程序设计
世JavaScript之父BrendanEich高度评价并强力推荐
JavaScript编程原理与运用规则完美融合,读者将在游戏式开发中学会JavaScript程序设计,是系统学习JavaScript程序设计的作品
JavaScript几乎可以说是所有现代Web应用程序的核心,无论是社交应用程序,还是时下流行的浏览器游戏。虽说学习和使用JavaScript的成本并不高,但是它却是一种灵活且复杂的编程语言,你可以用它来构建功能全面且复杂的应用程序。
《JavaScript编程精解(原书第2版)》深入剖析了JavaScript编程语言的内部细节,并阐述了编写优雅高效代码的方法。作者MarijnHaverbeke从示例代码开始讲解,逐步实现了完整的项目,与此同时作者还提供了一系列习题供读者练习,你可以从中学习并了解如何编写自己的程序。
通过阅读《JavaScript编程精解(原书第2版)》,你将学习和了解到:
编程的基本要素,这其中包括语法、控制流和数据。
如何组织和创建面向对象的代码以及函数式编程的技术。
如何在浏览器当中编写脚本和创建基本Web应用程序。
如何使用DOM与浏览器进行高效交互。
如何通过Node.js来构建服务器和工具。
《JavaScript编程精解(原书第2版)》的第2版经过全面的更新和修订,覆盖了JavaScript的绝大多数语言特性,涉及Web编程和Node.js服务器编程,以及JavaScript性能优化等。《JavaScript编程精解(原书第2版)》的在线网站提供了所有源代码,你可以通过在线沙箱来编辑、运行代码,并实时查看输出结果。
JavaScript是一门流行的程序设计语言,在这个Web的时代中,其地位已经变得越来越举足轻重。《JavaScript编程精解(原书第2版)》从JavaScript的基本语言特性入手,详细讲解JavaScript的语法,并通过一些实例,讲解使用其解决实际问题的方法与思路。同时又结合网页开发与Node.js讲解JavaScript在Web前端开发与服务端开发中的作用,可以为读者快速学习掌握JavaScript提供系统指导。
??
《JavaScript编程精解(原书第2版)》共分为三个部分。第一部分主要讨论JavaScript的语言特性。第1~4章介绍JavaScript语言的基本结构,包括控制结构、函数和数据结构。第5~6章深入探讨函数与对象,并介绍如何控制代码复杂度。第7章是实例项目,介绍如何使用基本的JavaScript语法解决实际问题。第8章介绍如何处理错误,第9章介绍正则表达式与JavaScript中正则表达式的用法。第10章介绍如何在JavaScript中构建使用模块。第11章作为第一部分的结尾,介绍如何设计并构建一个程序语言解析器。第二部分主要讲解如何在浏览器中运用JavaScript。第12章介绍JavaScript与浏览器的历史与关系。第13章介绍了浏览器的DOM模型。第14章介绍如何使用JavaScript处理DOM事件。第15章介绍如何通过操纵DOM来编写一个浏览器中的2D游戏。第16章介绍HTML5中的画布,并介绍如何使用JavaScript绘图。第17章介绍HTTP协议,以及如何使用JavaScript进行网络通信。第18章介绍表单与其使用方法。第19章是另一个实例项目,介绍如何开发一个基于HTML的绘图程序,是对第二部分的总结。第三部分是提高部分。第20章介绍如何使用Node.js开发Web服务,体现出JavaScript的强大威力。第21章介绍如何使用JavaScript完成一个完整的Web应用。最后一章则介绍提升JavaScript性能的一些基本原则与方法,并给出一些实例。
作者简介
马尔奇·哈弗贝克(MarijnHaverbeke),
JavaScript程序员,通晓多种编程语言,在Web开发方面积累了丰富的经验,在JavaScript领域颇有影响力。此外,他创建并维护着多个流行的开源项目,如CodeMirror编辑器和Tern类型推导引擎等。
译者简介
卢誉声,软件工程师,擅长C++多线程编程和实时分布式系统架构。曾在思科系统(中国)研发中心云产品研发部工作多年。他曾参与服务器后端、前端以及SDK的设计与研发工作,在大规模分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的敏捷实践与开发经验。现在在美国某IT/互联网公司工作,从事C++底层通信系统设计与研发。此外,他从事C/C++研发工作,对Java、JavaScript、Lua以及移动开发平台等也有一定研究。
译者序
赞誉
前言
第一部分 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.6 console.log函数14
2.7 返回值15
2.8 prompt和confirm函数15
2.9 控制流16
2.10 条件执行16
2.11 while和do循环17
2.12 代码缩进19
2.13 for循环19
2.14 跳出循环20
2.15 更新变量的简便方法21
2.16 switch条件分支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.13 arguments对象52
4.14 Math对象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.5 JSON63
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.10 Getter与Setter84
6.11 继承85
6.12 instanceof运算符87
6.13 本章小结87
6.14 习题88
第7章 项目实战:构建电子生态
系统89
7.1 定义89
7.2 描述世界90
7.3 动物的编程接口91
7.4 World对象93
7.5 this及其作用域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.12 replace方法125
9.13 贪婪模式126
9.14 动态创建RegExp对象127
9.15 search方法128
9.16 lastIndex属性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.6 require函数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.2 Web161
12.3 HTML162
12.4 HTML和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.1 SVG217
16.2 canvas元素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.3 XMLHttpRequest240
17.4 发送请求240
17.5 异步请求241
17.6 获取XML数据242
17.7 HTTP沙箱242
17.8 抽象请求243
17.9 Promise245
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.3 node命令278
20.4 模块278
20.5 使用NPM安装279
20.6 文件系统模块281
20.7 HTTP模块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.3 HTTP接口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









