新書推薦:
《
理论的意义
》
售價:HK$
74.8
《
悬壶杂记:医林旧事
》
售價:HK$
52.8
《
谁之罪?(汉译世界文学5)
》
售價:HK$
52.8
《
民国词社沤社研究
》
售價:HK$
140.8
《
帕纳索传来的消息(文艺复兴译丛)
》
售價:HK$
108.9
《
DK威士忌大百科
》
售價:HK$
294.8
《
小白学编织
》
售價:HK$
65.8
《
Android游戏开发从入门到精通 第2版 王玉芹
》
售價:HK$
108.9
|
編輯推薦: |
面向现代JS既完整又简捷的学习指南。读者真正可以从0开始起步,直接掌握功能更强大且更易驾驭的现代JavaScript,快速将其应用于商业环境,提高效率与产出。本书也可帮助读者实现从Java,C#,C或C 等语言JavaScript的快速转型。
√ 快速掌握现代JavaScript的基本编程结构
√ 避免使用会一些增加风险和复杂度的过时功能
√ 充分利用函数式,面向对象和异步编程
√ 使用模块来高效的组织和运行复杂的程序
√ 了解高级JavaScript技术,例如元编程和generator
√ 学习如何使用TypeScript让你的代码更安全
|
內容簡介: |
本书是一本简明的现代 JavaScript 教程,不仅涵盖函数式编程、JS 语法、JS 库等基础性内容,还介绍了国际化、异步编程、标准模块系统、元编程等较为复杂的内容,并附加了 TypeScript 的相关知识。部分章节根据其难度的不同设置了相应的图标,以便读者选择性学习。本书力求使初学者不被过时的 JavaScript 所困扰,能够在实践中高效地学会使用现代 JavaScript,既适合 JavaScript 初学者入门使用,也适合有一定基础的程序员进阶学习。
|
關於作者: |
本书作者凯·霍斯特曼(Cay S. Horstmann),是享誉全球的编程语言教育家。他是Core Java第 11 版 I、II 卷(Pearson, 2018),Scala for the Impatient 第 2 版 ( Addison-Wesley, 2016 ), 以 及 Core Java SE 9 for the Impatient (Addison-Wesley, 2017)的主要作者,同时是美国圣何塞州立大学计算机科学名誉教授、Java Champion 称号获得者,以及计算机行业会议常驻演讲者。
本书译者为阿里巴巴国际体验技术团队,由AliExpress前端和国际化中台前端组成。团队核心业务覆盖欧美电商平台AliExpress、东南亚电商平台Lazada、南亚电商平台Daraz及其他全球时尚电商品牌。其中AliExpress是全球第二大的电商平台,且在部分重点国家已超越亚马逊。技术团队有着丰富的JavaScript开发经验,在复杂的国际业务场景中,有着面向大前端的极强业务能力。而且,他们对JavaScript底层原理的深入理解、新特性的及时更新长期关注,与本书定位高度契合,对本书翻译品质的保障有很好的加持效果。
|
目錄:
|
第 1 章 值与变量 1
1.1 运行 JavaScript 3
1.2 类型和 typeof 运算符 6
1.3 注释 7
1.4 变量声明 7
1.5 标识符 9
1.6 数字 10
1.7 运算符 12
1.8 布尔值 14
1.9 null 和 undefined 14
1.10 字符串字面量 15
1.11 模板字面量 17
1.12 对象 18
1.13 对象字面语法 19
1.14 数组 21
1.15 JSON 22
1.16 解构 23
1.17 高级解构 25
1.17.1 对象解构详谈 26
1.17.2 剩余参数声明 26
1.17.3 默认值 27
练习题 27
第 2 章 控制结构 29
2.1 表达式和语句 31
2.2 自动分号插入 33
2.3 分支 36
2.4 布尔值转换 38
2.5 数值比较 39
2.6 混合比较 40
2.7 布尔运算符 42
2.8 switch 语句 44
2.9 while 和 do 循环 45
2.10 for 循环 46
2.10.1 传统 for 循环 46
2.10.2 for-of 循环 47
2.10.3 for-in 循环 48
2.11 跳出(Break)与跳过(Continue) 50
2.12 捕获异常 52
练习题 54
第 3 章 函数与函数式编程 57
3.1 函数声明 59
3.2 高阶函数 61
3.3 函数字面量 61
3.4 箭头函数 62
3.5 函数数组处理 64
3.6 闭包 65
3.7 固定对象 67
3.8 严格模式 69
3.9 测试参数类型 71
3.10 可选参数 72
3.11 默认参数 73
3.12 Rest 参数与扩展运算符 73
3.13 解构模拟命名参数 75
3.14 函数提升 76
3.15 抛出异常 79
3.16 捕获异常 79
3.17 finally 子句 81
练习题 82
第 4 章 面向对象编程 85
4.1 JavaScript 方法 87
4.2 原型(prototype) 88
4.3 构造函数 91
4.4 类句法 93
4.5 getter 和 setter 94
4.6 实例域和私有方法 95
4.7 静态方法和域 96
4.8 子类 97
4.9 重写方法 99
4.10 构建子类 100
4.11 类表达式 101
4.12 this 的指向 102
练习题 106
第 5 章 数字和日期 109
5.1 数字字面量 111
5.2 数字格式化 112
5.3 数字解析 113
5.4 数字方法和常量 114
5.5 数学运算方法和常量 115
5.6 大整数 116
5.7 构造日期 117
5.8 日期函数和方法 121
5.9 日期格式化 122
练习题 123
第 6 章 字符串和正则表达式 125
6.1 字符串和码位序列的转换 127
6.2 字符串子集 128
6.3 其他字符串方法 130
6.4 带标签的模版字面量 133
6.5 原始模版字面量 134
6.6 正则表达式 135
6.7 正则表达式字面量 139
6.8 修饰符(标记) 139
6.9 正则表达式和 Unicode 编码 140
6.10 RegExp 类方法 142
6.11 分组 143
6.12 正则表达式相关的字符串方法 145
6.13 关于正则替换的更多内容 147
6.14 奇异特性 148
练习题 150
第 7 章 数组与集合 153
7.1 创建数组 155
7.2 长度和索引属性 157
7.3 删除和新增元素 158
7.4 其他数组操作 160
7.5 生成元素 162
7.6 查找元素 163
7.7 访问所有的元素 164
7.8 稀疏数组 166
7.9 减少 168
7.10 Map 171
7.11 Set 173
7.12 Weak Map 和 Set 174
7.13 Typed Array 175
7.14 数组缓冲区 178
练习题 179
第 8 章 国际化 183
8.1 本地化概念 185
8.2 指定本地环境 186
8.3 格式化数字 188
8.4 本地化日期和时间 190
8.4.1 格式化 Date 对象 190
8.4.2 日期范围 192
8.4.3 相对时间 192
8.4.4 格式化各个部分 192
8.5 比较规则 193
8.6 其他支持本地化设置的字符串方法 195
8.7 复数规则和列表 196
8.8 其他本地化特性 197
练习题 199
第 9 章 异步编程 201
9.1 JavaScript 中的并发任务 203
9.2 实现 Promise 206
9.3 立即完结的 Promise 209
9.4 获取 Promise 的结果 210
9.5 Promise 的链式调用 210
9.6 Promise 的失败处理 213
9.7 执行多个 Promise 214
9.8 多个 Promise 的竞速 215
9.9 Async 函数 216
9.10 Async 返回值 218
9.11 并行 await 221
9.12 Async 方法中的异常 222
练习题 223
第 10 章 模块 227
10.1 模块的概念 229
10.2 ECMAScript 模块 230
10.3 默认引入 231
10.4 具名引入 231
10.5 动态引入 232
10.6 导出 233
10.6.1 具名导出 233
10.6.2 默认导出 234
10.6.3 导出变量 235
10.6.4 重新导出 236
10.7 打包模块 237
练习题 238
第 11 章 元编程 241
11.1 Symbol 243
11.2 定制 Symbol 属性 245
11.2.1 定制 toString 245
11.2.2 控制类型转换 246
11.2.3 Specy 247
11.3 属性的特性 248
11.4 枚举属性 250
11.5 测试单个属性 252
11.6 保护对象 252
11.7 创建或更新对象 253
11.8 访问和更新原型 254
11.9 克隆对象 254
11.10 函数属性 257
11.11 绑定参数和调用方法 258
11.12 代理 260
11.13 Reflect Class 262
11.14 Proxy 不变量 265
练习题 267
第 12 章 迭代器与 Generator 271
12.1 可迭代的数据类型 273
12.2 实现一个迭代器 275
12.3 可中断的迭代器 278
12.4 Generator 279
12.5 嵌套的 Yield 表达式 281
12.6 将生成器函数作为消费者 283
12.7 生成器和异步处理 285
12.8 异步生成器和迭代器 287
练习题 290
第 13 章 TypeScript 295
13.1 类型注解 298
13.2 运行 TypeScript 299
13.3 类型术语 301
13.4 基本类型 302
13.5 联合类型 303
13.6 类型推断 305
13.7 子类型 309
13.7.1 替代规则 309
13.7.2 可选属性及多余属性 310
13.7.3 数组和对象类型的变换 311
13.8 类 313
13.8.1 类声明 313
13.8.2 类的实例类型 315
13.8.3 类的静态类型 316
13.9 结构类型 317
13.10 接口 318
13.11 索引属性 320
13.12 复杂函数参数 321
13.12.1 可选、默认和剩余参数 322
13.12.2 解构参数 323
13.12.3 函数类型型变 324
13.12.4 重载 326
13.13 泛型编程 328
13.13.1 泛型类和类型 329
13.13.2 泛型函数 330
13.13.3 类型绑定 331
13.13.4 类型擦除 332
13.13.5 泛型的型变 333
13.13.6 条件类型 334
13.13.7 映射类型 335
练习题 336
|
內容試閱:
|
推荐序一
在过去的十年间,前端技术发展突飞猛进,各个领域异彩纷呈,对应框架层出不穷。从 HTML5 标准的诞生,到 Node.js 向服务端方向的爆发,再到前端MV(X)框架的百花齐放,还有可视化及互动领域的发展,以及各种无线技术的
融合和快速突破,前端领域变得越来越广,JavaScript 逐渐变得“无所不能”。
万丈高楼平地起,打好 JavaScript 基础非常重要。本书知识全面、深入浅出,非常适合初学者。作者结合自己的实践经验,精选了非常实用的例子,并提供了练习题,能够使初学者快速系统地掌握 JavaScript 底层原理,为以后前端编程实践打下扎实的基础。本书也适合 JavaScript 进阶编程者,书中介绍了作者的经验和技巧,还有许多 JavaScript 新特性和进阶内容,比如函数式编程、面向对象编程、国际化、异步编程、元编程、TypeScript 等,有助于进阶者查漏补缺,并快速掌握新特性。
本书的翻译成员来自国际体验技术团队,该团队由 AliExpress 前端和国际化中台前端组成,在长期的一线实践中,我们越发体会到掌握底层原理和及时更新特性的重要性。本书在内容上简洁明快、直击主题,“不费话”的风格在
市场上赢得了良好的口碑,所以我们终选择翻译此书,期望本书能够帮助国内更多的 JavaScript 初学者和进阶者实现能力的快速提升。
——高级前端专家 万健
推荐序二
JavaScript 已是当今热门的开发语言之一,具有强大的社区生态,在GitHub 的编程语言排名中持续名列前茅。与其他编程语言相比,JavaScript 具有自己的特点,在类型、面向对象、模块化、异步化等问题上都有着独特的思路
和特性。无论这些特性是好是坏、用户是否欣赏,都不妨碍 JavaScript 成为一门独具魅力的语言。
由于 JavaScript 的广泛使用,因此社区中涌现了一些框架/库,比如 React、Vue、Koa 等。使用这些框架/库来开发 JavaScript,能够显著提升开发效率和质量,但从个人学习 JavaScript 的角度,我更推荐不仅要会运用,还要掌握语言的原理和特性,而本书非常贴合这个目标。本书弱化了一些基础的编程知识,从JavaScript 语言的特性出发,利用 13 个章节,从基础到进阶,系统化地介绍了JavaScript 语言特性,每章附有练习题帮助读者进一步思考。无论是刚刚进入JavaScript 领域的初学者,还是具有一定经验的开发者,都能通过学习本书而有所收获。
本书的译者来自国际体验技术团队,他们有着丰富的 JavaScript 开发经验,解决过复杂且多样的技术和业务问题。他们结合自身的实践经验和感悟来翻译本书,在此过程中也对 JavaScript 有了更深刻的体会。
——资深前端专家 姜凡
推荐序三
Jeff Atwood 在 2007 年的一篇博客文章中提到:“任何可以用 JavaScript 来写的应用,终都将用 JavaScript 来编写”,这就是著名的阿特伍德定律。
JavaScript 诞生于 1995 年,经过多年的升级和进化,其基于原型的编程模式、无需编译多范式解析执行的轻量化动态脚本、支持面向对象和声明式的编码风格,使它成为了灵活且充满魅力的编程语言。时至今日,无论是 JavaScript 开发者数量,还是社区生态的丰富程度,都处于编程语言前列。
全球互联网经历了 PC 时代和无线时代,JavaScript 已无处不在,掌握这门语言已经是互联网应用开发者的技能。近年来,JavaScript 不断涌现出新的类库、框架、脚手架。这些与日俱增的类库大大丰富了 JavaScript 的生态,也提高了研发效率,但我在日常工作中却发现,越来越多的开发者过度依赖现成的类库和框架来完成工作,由于对基础知识的掌握不成体系,缺乏对语言原理性的理解,他们在工作中举一反三、追本溯源定位问题的能力偏弱。
编程是一门实践的科学。本书结合 JavaScript 语言的特性,不仅讲解了JavaScript 的基础知识,还介绍了许多非常“接地气”的案例,既适合初学者打牢基础,也适合有经验的开发者提升实践技能。书中内容精炼不废话,专为“大
忙人”量身定制。
本书的翻译人员都是来自国际体验技术团队的优秀前端开发者,在复杂的国际业务场景中,具有极强的解决实际问题的能力。本书作者对 JavaScript 有深刻的理解,翻译团队具有多年的前端开发经验,相信二者的结合一定能为读者带来新的收获。
——资深前端专家 唐爽
译者序
我非常幸运地参与了本书的翻译过程。和 JavaScript 打交道多年,这是我次如此深入细致地阅读一本技术图书——从原版到译文,逐字逐句斟酌。当然,翻译也是二次学习的过程,通过翻译本书,我巩固了已经掌握的知识,获益颇多。
正如书名一样,本书紧跟 JS 的发展,没有对其历史进行赘述,而是直接讲解实用、流行的现代 JS,对学习 JS 或者由其他语言转向 JS 的读者都会有很大的帮助。同时,本书对 JS 知识点进行了分层,读者可以根据自己的掌握程度选择相应的章节来阅读,也可以将本书用于进阶学习。所谓千人千面,相信不同的读者可以在本书中看到不同深度的 JavaScript。
虽然我们在翻译过程中竭力追求“信、达、雅”,但限于译者自身的水平及经验有限,错漏和不足之处在所难免,恳请读者批评指正。
开卷有益,祝读者能在学习 JS 的过程中体会到更多的乐趣!
——刘哲聿
本书的内容与书名非常贴合,确实是写给大忙人看的,内容上做到了简明扼要、除旧布新。同时,书中包含了作者想传达给作者的一些经验技巧,这让我在翻译和审校的过程中有耳目一新的感觉。相信你在阅读的过程中也一定会
有同样的收获!
——陈新
前端技术不断推陈出新,前端从业者叫着“学不动了”,其根本原因在于“没时间 要学的内容太多”,而 “for 大忙人 精简”是本书的特征。我有幸参与此书的翻译工作,于我而言,翻译过程也是一个很好的学习过程,希望这本
书也能够帮助到各位读者。
——王志强
本书用大量篇幅阐述原理、剖析本质,旨在帮助读者建立正确的前端基础理论体系。“万丈高楼平地起,勿在浮沙筑高台”,互联网行业正在经历新一轮井喷式的发展,在诱惑面前不动声色,潜心钻研,才是成长为“前端大神”的通途。
——孙承祚
如果你想要学习 JS 却苦于没有太多的时间,又希望能够比较全面地了解前端知识,那么本书是一个很好的选择。本书用简短的篇幅和精炼的语言阐释了前端知识及其新特性。在翻译校阅本书的过程中,我们也遵循了原书简明直接的宗旨。希望本书能对 JS 学习者有所帮助。
——陈松若
本书结合 ECMAScript 新特性,从语法到语言层面都给出了新颖有趣的阐述,并且每章结尾附有习题,有助于读者回顾章节中的知识。希望本书能帮助“大忙人” 读者理解并掌握这些新知识。
——张明
本书作者对 ECMAScript 标准的理解不只限于表面,而是深入标准背后的原因以及讨论过程。通过阅读此书,读者可以详细地了解这些标准的由来。希望本书可以帮助读者更深入地参与到社区建设中来。
——杨宇豪
如今国际化势头正盛,国际化意味着你的产品将有更多潜力,而本地化能让你的产品适用于各个特定的地区。本地化通常表现为多语言、多时区、多币种,本书是关于 JS 本地化的一个良好开端。
——毛训星
“高端的食材,往往只需要朴素的烹饪方式”——优美的代码,只需要利用原生的数组和集合操作。
——黄劲森
化繁为简、深入浅出并非易事,这要求讲解者本身有着扎实的知识体系和深刻的理解能力。但本书的作者做到了!在试图让译文既易于理解又尽可能保持原著精髓的过程中,我也体会到了“温故知新”的含义。愿君悦读,终有收获。
——蒋慧
本书虽为“大忙人”所著,但并非简单的 API 堆砌。恰到好处的例子,附上启发式的习题,全书虽篇幅不长,却能帮助读者夯实基础。愿读者皆有所受益,这也是本书的意义所在。
——韩章裕
JS 语言变化非常之快,本书详细介绍了 JS 的语法,比如元编程模块,可以帮助读者修炼“内功”。同时,译者在翻译的过程中加入了一些自己的见解,力求内容通俗易懂。如果你能掌握本书的全部内容,我相信你会具备非常扎实的 JS 基础,并在前端世界中畅游。
——熊能
JS 更新迭代比较快,我在翻译时会发现自己之前对于某些内容的认识十分粗浅。英文原书的书名虽然是“for the Impatient”,但实际上,这也是一本很适合在现代浏览器上用作 Cookbook 的图书。
——苏州
TypeScript 在现代前端工程体系中有着举足轻重的地位,本书对于TypeScript 的介绍由浅入深,并从发展的角度探讨了如何设计和权衡 TS 接口。如果读者能够结合习题深入思考,相信一定能够对 TS 有更深刻的理解,并开发出代码精简、功能健全的代码库。
——姚丰
前 言
熟悉 Java、C#、C 和 C 等语言的经验丰富的程序员经常会发现,在某些场景下需要使用 JavaScript。越来越多的用户界面基于 Web 实现,而作为 Web浏览器的通用语言,JavaScript 显得尤为重要。不仅如此,Electron 框架还将其功能扩展到了富客户端应用程序中,并且有多种解决方案可用于生成移动JavaScript 应用程序。同时,JavaScript 在服务器端也越来越常见。
多年前,JavaScript 一直被认为是一种“小型”的编程语言,对大型程序来说,JavaScript 的特性集可能会造成混淆且容易出错。然而,标准化和各类工具产品的出现使 JavaScript 的发展远远超出了人们的预期。
不幸的是,初学者在学习现代的 JavaScript 时,却时常被过时的 JavaScript困扰。大多数的图书、课程和博客文章从较早版本的 JavaScript 开始讲起,这对从其他语言转向 JavaScript 的程序员来说帮助有限。
这就是本书要解决的问题。假设你(读者)是有一定基础的程序员,已了解分支和循环、函数、数据结构以及面向对象编程的基础知识,我会讲解如何高效地使用现代 JavaScript。对于一些过时的功能,我会为你使用括号进行注释。你将学习到如何在实践中使用现代 JavaScript,完全不用担忧历史问题。
JavaScript 也许并不完美,但已被证明非常适合用于用户界面编程和多种服务器端任务。正如 Jeff Atwood 的预言:“任何可以用 JavaScript 编写的应用程序终都将用 JavaScript 编写。”
通过阅读本书,你能够学习到如何用现代 JavaScript 编写下一个版本的应用程序!
五条黄金法则
不使用 JavaScript 的部分“经典”功能可以大大减轻读者学习该语言的心理负担。对读者而言,下面这些规则可能暂时没什么意义,我暂且列出来,以便大家将来参考。放心,数量很少。
1.使用 let 或 const 代替 var 来声明变量。
2.使用严格模式(strict mode)编码。
3.明确类型并避免自动类型转换。
4.理解原型的概念,但使用类、构造函数和方法等现代语法实现对应的功能。
5.避免在构造函数或方法外使用 this。
还有一个公认的规则:避免使用 Wat 代码。Wat 代码就是那些令人困惑的JavaScript 代码,读者在研究后往往会发出讽刺性的感叹“Wat?!”。总有一些人喜欢通过剖析晦涩的代码来说明 JavaScript 适用性差,但实际上我们从那些代码“坑”里学不到什么有用的东西。例如,如果熟记黄金法则中的第 3 条“避免自动类型转换”,那么我们就没必要去研究“为什么 2 * [‘21’] 是 42,但 2 [‘40’]不是 42”了。总的来说,我们要尽量避免自己陷入这种毫无头绪的混乱境地,而不是试图去解释和理解那些无用的细节和原因。
学习途径
在写作本书时,我尽力梳理了内容和结构,以便读者查找阅读。为了帮助读者根据需求选择性地阅读,我用不同的图标标识了基础章节和高级章节。比默认章节更高级的章节会有相应的图标,读者可以在有一定基础储备之后再学
习高级章节。
图标介绍如下。
不耐烦的兔子代表基本内容,即使是没耐心的读者也不应跳过。
爱丽丝(Alice)是大多数程序员都想深入了解的主题,但非内容。
Cheshire 猫表示本章节为进阶内容,可能对框架开发人员有所帮助。应用程序领域的大部分程序员可以忽略此部分。
后,疯帽人表示该章节为复杂深奥的内容,主要针对那些希望深入研究探索的读者。
本书内容
第 1 章介绍 JavaScript 的基本概念,包括值、类型、变量,以及非常重要的对象字面量。第 2 章涵盖控制流的内容,熟悉 Java、C#或 C 语言的读者可以跳过此章。第 3 章介绍 JavaScript 中非常重要的部分——函数以及函数式编程,JavaScript 的对象模型与基于类的编程语言完全不同。第4 章深入细节,重点讨论现代 JS 语法。第 5 章和第 6 章涵盖了常用于处理数字、日期、字符串和正则表达式的库。以上章节主要为基础内容,包含少量的进阶内容。
接下来的 4 章均为中级内容。第 7 章介绍如何使用数组以及标准 JavaScript库提供的其他集合。如果你的程序需要与来自世界各地的用户进行交互,那么你需要特别关注第 8 章中有关国际化的内容。第 9 章主要讲解了异步编程的相
关内容,这对所有的程序员而言都是非常重要的。异步编程在 JavaScript 中曾经是非常复杂的话题,但随着 promises、async 和 await 等关键字的引入,异步编程也逐渐变得简单。第 10 章讨论 JavaScript 的标准模块系统,包括如何使用其他程序员编写的模块,以及如何生成自己的模块。
第 11 章主要介绍元编程,属于进阶内容。如果你要创建用于分析和转换任意 JavaScript 对象的工具,则需要阅读本章。第 12 章介绍 JavaScript 的另一个高级主题——迭代器和生成器,用于访问和创建任意值序列的强大机制。
第 13 章是附加章节,介绍了 TypeScript。TypeScript 是 JavaScript 的超集,它添加了编译时类型。它不是标准 JavaScript 的一部分,但是非常流行。阅读本章有助于读者确定是继续使用纯 JavaScript,还是使用流行的编译时类型。
本书的目的是帮助读者在 JavaScript 语言方面打下坚实的基础,使读者可以自信地使用 TypeScript。然而,读者还需要在其他地方寻找和跟进不断变化的工具和框架。
为什么写这本书
JavaScript 是全球常用的编程语言之一。像许多程序员一样,我初只懂JavaScript 的一点皮毛,直到某一天需要快速地学习严谨的 JavaScript,这时,问题来了:怎么去学呢?
很多书只给 Web 开发者介绍一点点 JavaScript,但其实我已经对其有了一定的了解。1996 年,戴维·弗拉纳根(David Flanagan)的犀牛系列(Rhino)图书很畅销,但由于各种历史原因,如今读者读起来已经“不堪重负”。2008 年,道格拉斯·克罗克福德(Douglas Crockford)的 JavaScript:The Good Parts 是不错的 JavaScript 入门书,但是书中很多内容已在随后的语言更改中被同化。很多图书让那些使用老式 JavaScript 的程序员学习现代标准,但我并不认同这些书中部分所谓“经典”的 JavaScript。
当然,网络上充斥着质量参差不齐的 JavaScript 主题博客,有些内容准确,但更多的内容对于本质的理解并不准确,因此这种通过在网上搜索博客再评估其真实性水平的学习方式效率太低了。
奇怪的是,我找不到一本没有历史包袱的、面向数百万懂 Java 或类似语言并且想学习 JavaScript 的程序员的书,因此我决定编写本书。
致谢
再次感谢编辑 Greg Doench 支持该项目,感谢 Dmitry Kirsanov 和 Alina Kirsanova 对本书进行编辑和排版。 特别感谢审稿人 Gail Anderson、Tom Austin、Scott Davis、Scott Good、Kito Mann、Bob Nicholson、Ron Mak 和 Henri Tremblay提出的校对和改进建议。
Cay Horstmann Berlin 2020 年 3 月
|
|