重磅推荐
【产品特色】


【编辑推荐】

适读人群 :本书适合希望学习Web编程语言的初、中级程序员和希望精通JavaScript的程序员阅读。

近25年来,这本“犀牛书”凭着完整的内容、细致的讲解以及海量针对性的示例而受到全球读者的一致好评。经过几代前端人的口口相传,成为了名副其实的JavaScript权威指南!

本版已经更新到涵盖JavaScript的2020版。书中令人深思、富有启发性的示例随处可见。

这本“犀牛书”影响着每一位前端人,一直是几十万JavaScript程序员的技术著作,在很多工程师心目中有着至高无上的地位。如果你由于种种原因错过了它之前的版本,那一定不要再错过这一版了!


【内容简介】

本书要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。本书第6版涵盖了HTML5和ECMAScript5,很多章节完全重写,增加了当今Web开发的佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合有经验的JavaScript开发者随手翻阅。


【作者简介】

David Flanagan从1995起就开始使用JavaScript并写作本书的第1版。他拥有麻省理工学院计算机科学与工程学位,目前是VMware的一名软件工程师。


【媒体评论】

★“本书包含的JavaScript知识是前所未有的。作者对这门语言有极其精深的理解,跟着作者的脚步,你将穿过JavaScript的重重迷雾,探索令人叹为观止的真知,让你的JavaScript代码质量和编程效率更上一层楼,终折服于本书的惊人魅力。”

—Schalk Neethling,MDN Web Docs的资深前端工程师

★“David Flanagan带领读者领略了JavaScript的全景,包括语言及其生态,展现在读者眼前的是一幅巨细无遗的美丽画卷。”

—Sarah Wachs,前端开发者、Women Who Code Berlin负责人

★“任何有志于限度地利用JavaScript特性(包括前沿的特性)来高效产出代码的开发者,都能通过这本全面且权威的著作收获满满。”

—Brian Sletten,Bosatsu Consulting总裁


【目录】

前言1
第1章 JavaScript概述5
1.1 JavaScript语言核心8
1.2 客户端JavaScript12
部分 JavaScript 语言核心
第2章 词法结构25
2.1 字符集25
2.2 注释27
2.3 直接量27
2.4 标识符和保留字28
2.5 可选的分号30
第3章 类型、值和变量32
3.1 数字34
3.2 文本38
3.3 布尔值43
3.4 null和undefined44
3.5 全局对象45
3.6 包装对象46
3.7 不可变的原始值和可变的对象引用47
3.8 类型转换48
3.9 变量声明55
3.10 变量作用域56
第4章 表达式和运算符60
4.1 原始表达式60
4.2 对象和数组的初始化表达式61
4.3 函数定义表达式62
4.4 属性访问表达式63
4.5 调用表达式64
4.6 对象创建表达式64
4.7 运算符概述65
4.8 算术表达式69
4.9 关系表达式74
4.10 逻辑表达式79
4.11 赋值表达式81
4.12 表达式计算83
4.13 其他运算符86
第5章 语句91
5.1 表达式语句92
5.2 复合语句和空语句92
5.3 声明语句94
5.4 条件语句96
5.5 循环101
5.6 跳转106
5.7 其他语句类型113
5.8 JavaScript语句小结116
第6章 对象118
6.1 创建对象120
6.2 属性的查询和设置123
6.3 删除属性127
6.4 检测属性128
6.5 枚举属性130
6.6 属性getter和setter132
6.7 属性的特性134
6.8 对象的三个属性138
6.9 序列化对象141
6.10 对象方法142
第7章 数组144
7.1 创建数组 144
7.2 数组元素的读和写145
7.3 稀疏数组147
7.4 数组长度148
7.5 数组元素的添加和删除149
7.6 数组遍历149
7.7 多维数组151
7.8 数组方法152
7.9 ECMAScript 5中的数组方法 156
7.10 数组类型160
7.11 类数组对象161
7.12 作为数组的字符串163
第8章 函数165
8.1 函数定义166
8.2 函数调用168
8.3 函数的实参和形参173
8.4 作为值的函数178
8.5 作为命名空间的函数181
8.6 闭包182
8.7 函数属性、方法和构造函数188
8.8 函数式编程194
第9章 类和模块201
9.1 类和原型202
9.2 类和构造函数203
9.3 JavaScript中Java式的类继承207
9.4 类的扩充210
9.5 类和类型212
9.6 JavaScript中的面向对象技术217
9.7 子类230
9.8 ECMAScript 5 中的类239
9.9 模块248
第10章 正则表达式的模式匹配253
10.1 正则表达式的定义253
10.2 用于模式匹配的String方法261
10.3 RegExp对象263
第11章 JavaScript的子集和扩展267
11.1 JavaScript的子集268
11.2 常量和局部变量271
11.3 解构赋值274
11.4 迭代276
11.5 函数简写285
11.6 多catch 从句285
11.7 E4X: ECMAScript for XML286
第12章 服务器端JavaScript290
12.1 用Rhino脚本化Java291
12.2 用Node实现异步I/O297
第二部分 客户端JavaScript
第13章 Web浏览器中的JavaScript309
13.1 客户端JavaScript309
13.2 在HTML里嵌入JavaScript313
13.3 JavaScript程序的执行319
13.4 兼容性和互用性326
13.5 可访问性333
13.6 安全性334
13.7 客户端框架339
第14章 Window对象341
14.1 计时器342
14.2 浏览器定位和导航343
14.3 浏览历史345
14.4 浏览器和屏幕信息346
14.5 对话框348
14.6 错误处理351
14.7 作为Window对象属性的文档元素351
14.8 多窗口和窗体353
第15章 脚本化文档361
15.1 DOM概览362
15.2 选取文档元素364
15.3 文档结构和遍历371
15.4 属性375
15.5 元素的内容378
15.6 创建、插入和删除节点382
15.7 例子:生成目录表387
15.8 文档和元素的几何形状和滚动389
15.9 HTML表单396
15.10 其他文档特性404
第16章 脚本化CSS410
16.1 CSS概览411
16.2 重要的CSS属性416
16.3 脚本化内联样式427
16.4 查询计算出的样式431
16.5 脚本化CSS类433
16.6 脚本化样式表436
第17章 事件处理440
17.1 事件类型442
17.2 注册事件处理程序451
17.3 事件处理程序的调用454
17.4 文档加载事件459
17.5 鼠标事件461
17.6 鼠标滚轮事件465
17.7 拖放事件468
17.8 文本事件475
17.9 键盘事件478
第18章 脚本化HTTP484
18.1 使用XMLHttpRequest487
18.2 借助


【前言】

本书介绍JavaScript语言和由浏览器与Node实现的JavaScript API。本书适合有一定编程经验、想学习JavaScript读者,也适合已经在使用JavaScript但希望更深入地理解进而真正掌握这门语言的程序员。

本书的目标是全面地讲解JavaScript语言,对JavaScript程序中可能用到的重要的客户端API和服务器端API提供深入的介绍。本书篇幅较长,内容非常详尽,相信认真研究本书的读者都能获益良多。

【译者序】

翻译这本“犀牛书”是我十几年来的一个夙愿。尽管由于种种原因错过了原书第5版和第6版,但终于还是得偿所愿。2021年是我从事技术翻译的第十五个年头。因此,本书也是我倾注多年经验翻译而成的。

虽然翻译本书前前后后花了6个多月,但囿于工作和生活的压力,我确实做不到对书中每一句话都反复推敲。我当然知道“好译文是改出来的”,但翻译也是一门“遗憾的艺术”,所以我的翻译肯定不是完美无缺的。如果要我对这本书(或者说对我近十年来翻译出版的所有技术专著,包括2020年上市的“红宝书”第4版)的翻译过程打个比方,我想贴切的比喻莫过于即兴视奏:面对一本从未见过的乐谱,你必须从奏响个音符开始,一气呵成地把整首曲子演奏完。演奏开始后,的目标就是全神贯注,心无旁骛,快速看懂每个音符、每个节奏,尽努力把内容按照原样准确无误地呈现出来。当然,不同的是,翻译过程中虽然也有假想的读者存在,但这些“读者”并不妨碍我在发觉之前章节的翻译有问题时回过头去修正。

这其实正是我期望的理想翻译状态,即“一边阅读,一边翻译”。技术图书翻译属于非文学翻译或者技术翻译的范畴。技术翻译的主要目的是译文准确、通顺,确保其当时当下的实用性。除此之外,对文笔或修辞的技巧无须做过高要求。一本优秀的技术图书,终让读者受益的是它的内容和思想,而不是它的文字。文字作为形式或载体固然重要,但从译者的角度来说,不让自己的文字成为传达内容的阻碍就是的贡献。回顾我的技术翻译生涯,十几年来从未间断翻译实践。随着翻译经验的不断积累,我对翻译的认知也经历了深入浅出的过程。从初的“翻译即翻译”,到后来的“翻译即写作”,再到如今的“翻译即阅读”,经历了几次较大的扬弃。“翻译”和“写作”,强调的其实是“转换”和“表达”,而“阅读”强调的则是对原文的理解。某种程度上,这可能也说明自己已经比较成功地解决了“转换”和“表达”的问题,从而可以把精力更多地放到“阅读”和“理解”上。

JavaScript无疑是一门成功的语言,而且是世界上使用多的语言。这本“犀牛书”在很多工程师心目中有着至高无上的地位。如果你由于种种原因错过了它之前的版本,那一定不要再错过这一版了。在我看来,尽管市面上讲解JavaScript语言和技术的专著层出不穷,但像这本书这样能够贴近ECMAScript和W3C规范的著作并不多见。ECMAScript和W3C规范是用英文写的,这对母语为中文的工程师无疑是个巨大的障碍。希望本书在字里行间流露出的与各种规范千丝万缕的联系,能够时刻提醒每一位读者多花一些时间去研究语言本身和规范本身。这不仅仅是个“知其然,也知其所以然”的问题,更是一个追赶和超越的问题。相信再过5年、10年、20年,中文开发者社区一定能够涌现出更多屹立在时代潮头的工程师和作者。

李松峰


返回顶部