首页>参考读物>计算机科学与技术>软件与程序设计

JavaScript权威指南(原书第7版)
作者 : [美]大卫·弗拉纳根(David Flanagan) 著
译者 : 李松峰 译
出版日期 : 2021-03-09
ISBN : 978-7-111-67722-2
定价 : 139.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 608
开本 : 16
原书名 : JavaScript: The Definitive Guide,Seventh Edition
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

书介绍JavaScript语言和由浏览器与Node实现的JavaScript API。本书适合有一定编程经验、想学习JavaScript读者,也适合已经在使用JavaScript但希望更深入地理解进而真正掌握这门语言的程序员。本书的目标是全面地讲解JavaScript语言,对JavaScript程序中可能用到的重要的客户端API和服务器端API提供深入的介绍。本书篇幅较长,内容非常详尽,相信认真研究本书的读者都能获益良多。

图书特色

图书前言

本书介绍JavaScript语言和由浏览器及Node实现的JavaScript API。本书适合有一定编程经验、想学习JavaScript的读者,也适合已经在使用JavaScript但希望更深入地理解进而真正掌握这门语言的程序员。本书的目标是全面、权威地讲解JavaScript语言,对JavaScript程序中可能用到的最重要的客户端API和服务器端API提供深入的介绍。因此本书篇幅较长,内容非常详尽,相信认真研究本书的读者都能获益良多。
本书之前的版本都包含一个完整的参考部分。如今,在网上可以迅速、轻易地获取最新的参考资料,因此已经完全没必要在纸质版中再包含这些内容。如果你想查找与核心JavaScript或客户端JavaScript相关的任何资料,可以访问MDN网站(https://developer.mozilla.org)。对于服务器端Node API,推荐直接查阅Node.js参考文档(https://nodejs.org/api)。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示重要的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、 数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示一般性说明。
该图示表示警告或注意。
示例代码
可以从https://oreil.ly/javascript_defgd7下载补充材料(示例代码、练习、勘误等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处的形式包含书名、作者、出版社和ISBN,例如:
JavaScript: The Definitive Guide, Seventh Edition,作者David Flanagan,由O’Reilly出版,书号978-1-491-95202-3
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@oreilly.com联系我们。
O’Reilly 在线学习平台
40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享知识和经验。O’Reilly的在线学习平台(O’Reilly Online Learning)允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://oreil.ly/javascript_defgd7上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
很多人对本书的创作有贡献。感谢本书的编辑Angela Rufino,是她帮我把控进度,并容忍我拖稿。也要感谢本书的技术审校者Brian Sletten、Elisabeth Robson、Ethan Flanagan、Maximiliano Firtman、Sarah Wachs和Schalk Neethling,他们的意见和建议让本书变得更好。
O’Reilly的制作团队像往常一样出色地完成了他们的工作:Kristen Brown负责印制,Deborah Baker是产品编辑,Rebecca Demarest画了插图,Judy McConville编制了索引。
也要感谢本书之前版本的编辑、审校者和贡献者:Andrew Schulman、Angelo Sirigos、Aristotle Pagaltzis、Brendan Eich、Christian Heilmann、Dan Shafer、Dave C. Mitchell、Deb Cameron、Douglas Crockford、Dr. Tankred Hirschmann、Dylan Schiemann、Frank Willison、Geoff Stearns、Herman Venter、Jay Hodges、Jeff Yates、Joseph Kesselman、Ken Cooper、Larry Sullivan、Lynn Rollins、Neil Berkman、Mike Loukides、Nick Thompson、Norris Boyd、Paula Ferguson、Peter-Paul Koch、Philippe Le Hegaret、Raffaele Cecco、Richard Yaker、Sanders Kleinfeld、Scott Furman、Scott Isaacs、Shon Katzenberger、Terry Allen、Todd Ditchendorf、Vidur Apparao、Waldemar Horwat,以及Zachary Kessin。
写作本书让我无数个深夜不能陪伴在家人左右。我爱他们,感谢他们对我不在身边的宽容。
David Flanagan
2020年3月

上架指导

计算机\程序设计

封底文字

JavaScript是Web编程语言,也是如今软件开发者使用最多的编程语言。近25年来,这本畅销书一直是JavaScript程序员必读的技术著作,本版已经更新到涵盖JavaScript的2020版。新增的关于类、模块、迭代器、生成器、期约和async/await的章节中,令人深思、富有启发性的示例随处可见。
本书适合想学习JavaScript的程序员,以及希望深入理解和掌握这门语言的Web开发者。
本书涵盖以下内容:
? 类型、变量、操作符、语句、对象和数组。
? 函数、类、模块、迭代器、生成器、期约和async/await。
? JavaScript标准库,包括数据结构、正则表达式、JSON、国际化和URL。
? Web平台,包括文档、组件、图形、网络、存储和线程。
? Node.js,包括缓冲区、文件、流、线程、子进程、Web客户端和Web服务器。
? 专业JavaScript开发者必备的工具和语言扩展。

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

“本书包含的知识是前所未有的。作者对这门语言有极其精深的理解,跟着作者的脚步,你将穿过JavaScript的重重迷雾,探索令人叹为观止的真知,让你的JavaScript代码质量和编程效率更上一层楼,最终折服于本书的惊人魅力。”
——Schalk Neethling
MDN Web Docs资深前端工程师
“ David Flanagan带领读者领略了JavaScript的全景,包括语言及其生态,展现在读者眼前的是一幅巨细无遗的美丽画卷。”
——Sarah Wachs
前端开发者
Women Who Code Berlin负责人

译者序

翻译这本“犀牛书”是我十几年来的一个夙愿。尽管由于种种原因错过了原书第5版和第6版,但终于还是得偿所愿。2021年是我从事技术翻译的第十五个年头。因此,本书也是我倾注多年经验翻译而成的。
虽然翻译本书前前后后花了6个多月,但囿于工作和生活的压力,我确实做不到对书中每一句话都反复推敲。我当然知道“好译文是改出来的”,但翻译也是一门“遗憾的艺术”,所以我的翻译肯定不是完美无缺的。如果要我对这本书(或者说对我近十年来翻译出版的所有技术专著,包括2020年上市的“红宝书”第4版)的翻译过程打个比方,我想最贴切的比喻莫过于即兴视奏:面对一本从未见过的乐谱,你必须从奏响第一个音符开始,一气呵成地把整首曲子演奏完。演奏开始后,唯一的目标就是全神贯注,心无旁骛,快速看懂每个音符、每个节奏,尽最大努力把内容按照原样准确无误地呈现出来。当然,不同的是,翻译过程中虽然也有假想的读者存在,但这些“读者”并不妨碍我在发觉之前章节的翻译有问题时回过头去修正。
这其实正是我期望的理想翻译状态,即“一边阅读,一边翻译”。技术图书翻译属于非文学翻译或者技术翻译的范畴。技术翻译的主要目的是译文准确、通顺,确保其当时当下的实用性。除此之外,对文笔或修辞的技巧无须做过高要求。一本优秀的技术图书,最终让读者受益的是它的内容和思想,而不是它的文字。文字作为形式或载体固然重要,但从译者的角度来说,不让自己的文字成为传达内容的阻碍就是最大的贡献。回顾我的技术翻译生涯,十几年来从未间断翻译实践。随着翻译经验的不断积累,我对翻译的认知也经历了深入浅出的过程。从最初的“翻译即翻译”,到后来的“翻译即写作”,再到如今的“翻译即阅读”,经历了几次较大的扬弃。“翻译”和“写作”,强调的其实是“转换”和“表达”,而“阅读”强调的则是对原文的理解。某种程度上,这可能也说明自己已经比较成功地解决了“转换”和“表达”的问题,从而可以把精力更多地放到“阅读”和“理解”上。
JavaScript无疑是一门成功的语言,而且是世界上使用最多的语言。这本“犀牛书”在很多工程师心目中有着至高无上的地位。如果你由于种种原因错过了它之前的版本,那一定不要再错过这一版了。在我看来,尽管市面上讲解JavaScript语言和技术的专著层出不穷,但像这本书这样能够贴近ECMAScript和W3C规范的著作并不多见。ECMAScript和W3C规范是用英文写的,这对母语为中文的工程师无疑是个巨大的障碍。希望本书在字里行间流露出的与各种规范千丝万缕的联系,能够时刻提醒每一位读者多花一些时间去研究语言本身和规范本身。这不仅仅是个“知其然,也知其所以然”的问题,更是一个追赶和超越的问题。相信再过5年、10年、20年,中文开发者社区一定能够涌现出更多屹立在时代潮头的工程师和作者。
本书翻译的顺利完成也离不开一些工程师的支持。感谢月影(吴亮)、樊华、张荣剑、刘业、巫新华、包卓娜、宋思嘉、陈雁楠、翟梦男、关婷婷、王若铮以及刘敏在我翻译期间,在工作方面给予我的大力支持。感谢机械工业出版社华章分社的编辑王春华、李忠明、孙榕舒、关敏为本书出版付出的心血,也感谢老朋友杨福川为我翻译本书牵线搭桥。最后感谢我的妻子,为了让我按时交稿,她每天都会督促我翻译几页,终于“积水成渊”。

李松峰
2021年1月3日

图书目录

前言1
第1章 JavaScript简介5
1.1 探索JavaScript7
1.2 Hello World8
1.3 JavaScript之旅9
1.4 示例:字符频率柱形图14
1.5 小结17
第2章 词法结构18
2.1 JavaScript程序的文本18
2.2 注释19
2.3 字面量19
2.4 标识符和保留字19
2.5 Unicode20
2.6 可选的分号21
2.7 小结23
第3章 类型、值和变量24
3.1 概述与定义24
3.2 数值26
3.3 文本32
3.4 布尔值38
3.5 null与undefined39
3.6 符号40
3.7 全局对象41
3.8 不可修改的原始值与可修改的对象引用42
3.9 类型转换44
3.10 变量声明与赋值51
3.11 小结58
第4章 表达式与操作符59
4.1 主表达式59
4.2 对象和数组初始化程序60
4.3 函数定义表达式61
4.4 属性访问表达式62
4.5 调用表达式64
4.6 对象创建表达式65
4.7 操作符概述66
4.8 算术表达式70
4.9 关系表达式75
4.10 逻辑表达式79
4.11 赋值表达式82
4.12 求值表达式83
4.13 其他操作符86
4.14 小结91
第5章 语句92
5.1 表达式语句93
5.2 复合语句与空语句93
5.3 条件语句94
5.4 循环语句99
5.5 跳转语句106
5.6 其他语句113
5.7 声明117
5.8 小结119
第6章 对象120
6.1 对象简介120
6.2 创建对象121
6.3 查询和设置属性124
6.4 删除属性128
6.5 测试属性129
6.6 枚举属性130
6.7 扩展对象131
6.8 序列化对象133
6.9 对象方法133
6.10 对象字面量扩展语法135
6.11 小结141
第7章 数组143
7.1 创建数组144
7.2 读写数组元素146
7.3 稀疏数组148
7.4 数组长度148
7.5 添加和删除数组元素149
7.6 迭代数组150
7.7 多维数组151
7.8 数组方法152
7.9 类数组对象163
7.10 作为数组的字符串165
7.11 小结166
第8章 函数167
8.1 定义函数167
8.2 调用函数172
8.3 函数实参与形参177
8.4 函数作为值184
8.5 函数作为命名空间187
8.6 闭包188
8.7 函数属性、方法与构造函数192
8.8 函数式编程196
8.9 小结201
第9章 类202
9.1 类和原型203
9.2 类和构造函数204
9.3 使用class关键字的类209
9.4 为已有类添加方法215
9.5 子类216
9.6 小结226
第10章 模块227
10.1 基于类、对象和闭包的模块227
10.2 Node中的模块230
10.3 ES6中的模块232
10.4 小结242
第11章 JavaScript标准库243
11.1 集合与映射244
11.2 定型数组与二进制数据249
11.3 正则表达式与模式匹配255
11.4 日期与时间273
11.5 Error类276
11.6 JSON序列化与解析277
11.7 国际化API280
11.8 控制台API287
11.9 URL API290
11.10 计时器293
11.11 小结294
第12章 迭代器与生成器295
12.1 迭代器原理296
12.2 实现可迭代对象296
12.3 生成器300
12.4 高级生成器特性303
12.5 小结306
第13章 异步JavaScript307
13.1 使用回调的异步编程307
13.2 期约311
13.3 async和await330
13.4 异步迭代332
13.5 小结338
第14章 元编程340
14.1 属性的特性340
14.2 对象的可扩展能力345
14.3 prototype特性346
14.4 公认符号347
14.5 模板标签354
14.6 反射API356
14.7 代理对象359
14.8 小结365
第15章 浏览器中的JavaScript367
15.1 Web编程基础369
15.2 事件382
15.3 操作DOM391
15.4 操作CSS406
15.5 文档几何与滚动412
15.6 Web组件416
15.7 可伸缩矢量图形427
15.8 与图形434
15.9 Audio API453
15.10 位置、导航与历史455
15.11 网络463
15.12 存储479
15.13 工作线程与消息传递490
15.14 示例:曼德布洛特集合496
15.15 小结及未来阅读建议508
第16章 Node服务器端JavaScript515
16.1 Node编程基础516
16.2 Node默认异步520
16.3 缓冲区523
16.4 事件与EventEmitter525
16.5 流526
16.6 进程、CPU和操作系统细节536
16.7 操作文件537
16.8 HTTP客户端与服务器547
16.9 非HTTP网络服务器及客户端551
16.10 操作子进程554
16.11 工作线程558
16.12 小结566
第17章 JavaScript工具和扩展568
17.1 使用ESLint检查代码569
17.2 使用Prettier格式化代码570
17.3 使用Jest做单元测试570
17.4 使用npm管理依赖包573
17.5 代码打包574
17.6 使用Babel转译576
17.7 JSX:JavaScript中的标记表达式577
17.8 使用Flow检查类型581
17.9 小结595
关于作者596
关于封面596

教学资源推荐
作者: Charles N.Fischer, Richard J.LeBlanc,Jr.
作者: Bjarne Stroustrup
作者: 刘冰 张林 蒋贵全 杨勇 编著
作者: [印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著
参考读物推荐
作者: 张克发 赵兴 谢有龙 等著
作者: 李松涛 魏巍 甘捷 著
作者: [美]弗拉维奥·荣凯拉(Flavio Junqueira) 本杰明·里德(Benjamin Reed) 著
作者: 吴明杰 曹宇 吴丹 著