本书特色
适读人群 :前端开发者,计算机专业院校师生,编程语言与计算机技术爱好者等√ 语言诞生、标准创立、改革失败、既往开来四大华彩乐章,真实且深刻地记录了JS发展关键节点的每一个人每一种选择每一次牺牲,用语言缔造者的独到视角、敏锐观察和深刻理解,将这门伟大语言的峥嵘与妙趣一一呈现。 √ 跟随当事人穿梭于 JavaScript 二十年发展史之间,从十天发明 JavaScript 的历史故事再到 ES1 标准化的合纵连横,再到 ES4 的失意、ES5 的妥协与 ES6 的成功,本书将为你解答种种“语言为什么要设计成这样”的问题。 √ 以下中外前端风云人物撰文力荐此书:周爱民|Hax|Douglas(老道)|justjavac|死月|月影|李玉北|张云龙|顾轶灵|黄轶|于航|沈毅|黄玄|工业聚|小爝|一丝|题叶|染陌|Jasin Yip|LucasHC|小帅|寒雁|太狼|敖天羽|xcatliu|Himself65。 √ 本书可谓由JavaScript发明者与ES6规范首席作者联袂出品的语言演化史研究,不仅解读了语言标准化背后技术与商业上的种种竞争与合作,JavaScript诞生以来历次语言设计变革的思想根源,均可在其中找到答案。
内容简介
本书主要讲述了从1995年到2015年这20年间,JavaScript在创建、设计和演变方面所经历的过程。全书分为4个部分,每个部分都涵盖了JavaScript发展和演化的一个主要阶段,其中不仅涉及语言发展的技术细节,还介绍了人们和组织如何在竞争与合作中逐渐塑造JavaScript语言的故事。本书适合JavaScript初学者和开发人员阅读和使用,也适合非JavaScript从业者翻阅。
作者简介
Allen Wirfs-Brock是编程语言及实现方面的专家,在开发编译器、虚拟机、编程环境和完整的计算机系统方面有着丰富的经验。他是面向对象编程技术兴起时期的技术创新者和业务领导者,并深度参与了 Smalltalk编程语言的开发过程。在2009-2015年,他是ECMAScript语言规范的项目编辑。 Brendan Eich是Brave Software和Basic Attention Token的联合创始人兼CEO。他曾担任Mozilla公司的CTO和CEO。在此之前,他是Mozilla项目和基金会的联合创始人。在Mozilla工作期间,他协助推出了屡获殊荣的Firefox网络浏览器。Brendan Eich也是JavaScript的发明者,这是互联网上使用最广泛的编程语言之一。
目录
第 1 篇 语言诞生
第 1 章 史前时代 ……………………………………………………………………….3
1.1 Brendan Eich 加入网景 ………………………………………………………………4
1.2 Mocha 的故事 …………………………………………………………………………..5
第 2 章 JavaScript 1.0 与 1.1……………………………………………………….8
2.1 JavaScript 语法 ……………………………………………………………………….10
2.2 数据类型与表达式 …………………………………………………………………..11
2.3 对象 ………………………………………………………………………………………14
2.4 函数对象 ………………………………………………………………………………..17
2.5 内置库 …………………………………………………………………………………..18
2.6 执行模型 ………………………………………………………………………………..20
2.7 迷惑行为与 bug ………………………………………………………………………22
2.7.1 冗余声明 …………………………………………………………………….22
2.7.2 隐式类型转换与 = = 运算符 …………………………………………..23
2.7.3 32 位算术 ……………………………………………………………………23
2.7.4 this 关键字…………………………………………………………………..24
2.7.5 arguments 对象 …………………………………………………………….24
2.7.6 对数值属性键的特殊处理 ……………………………………………..25
2.7.7 原始值的属性 ………………………………………………………………26
2.7.8 JavaScript 中的 HTML 注释 …………………………………………..26
xxiv | JavaScript二十年
第 3 章 微软 JScript …………………………………………………………………28
第 4 章 从 Mocha 到 SpiderMonkey …………………………………………….30
第 5 章 插曲 :风评被害 …………………………………………………………….35
第 2 篇 创立标准
第 6 章 寻找场地 ……………………………………………………………………..39
第 7 章 首次 TC39 会议 …………………………………………………………….41
第 8 章 编写规范 ……………………………………………………………………..45
第 9 章 命名标准 ……………………………………………………………………..50
第 10 章 ISO 快速通道 ……………………………………………………………..52
第 11 章 定义 ECMAScript 3 ……………………………………………………..53
第 12 章 插曲 :JavaScript 不需要 Java ……………………………………….63
12.1 布道师 …………………………………………………………………………………63
12.2 富互联网应用与 AJAX …………………………………………………………..64
12.3 浏览器博弈论 ……………………………………………………………………….67
第 3 篇 改革失败
第 13 章 不满于成功 …………………………………………………………………71
第 14 章 对 ES4 的第一轮尝试 ……………………………………………………72
第 15 章 另一条死路 …………………………………………………………………78
第 16 章 Flash 与 ActionScript …………………………………………………..80
目录 | xxv
第 17 章 对 ES4 的第二轮尝试 ……………………………………………………82
17.1 重置 TC39-TG1 …………………………………………………………………….82
17.2 重新设计 ES4 ……………………………………………………………………….83
17.3 阻力 …………………………………………………………………………………….87
17.4 寻求和谐 ………………………………………………………………………………93
第 18 章 插曲 :认真对待 JavaScript …………………………………………. 100
18.1 JavaScript 性能革命 ……………………………………………………………..100
18.2 CommonJS 和 Node.js ………………………………………………………….101
18.3 成为浏览器通用运行时的 JavaScript………………………………………103
第 4 篇 继往开来
第 19 章 开发 ES3.1/ES5 ……………………………………………………….. 109
19.1 ES5 技术设计 ……………………………………………………………………..114
19.1.1 严格模式 …………………………………………………………………114
19.1.2 Getter、Setter 和对象元操作 ………………………………………116
19.1.3 对象的完整性与安全性特性 ……………………………………….122
19.1.4 活动对象(Activation Object)的移除 ………………………..125
19.1.5 其他 ES5 特性 ………………………………………………………….126
19.2 实现与测试 …………………………………………………………………………127
第 20 章 从 Harmony 到 ECMAScript 2015 ………………………………… 130
20.1 开始投入 Harmony ………………………………………………………………130
20.1.1 稻草人(Strawman)与目标 ………………………………………130
20.1.2 倡导者模型 ………………………………………………………………132
20.1.3 选择特性集 ………………………………………………………………132
20.1.4 开始编写规范 …………………………………………………………..133
20.1.5 One JavaScript ………………………………………………………….134
20.1.6 Brendan 的梦想 ………………………………………………………..135
20.2 重新打造规范 ……………………………………………………………………..138
20.2.1 重组规范结构 …………………………………………………………..139
20.2.2 新的术语 …………………………………………………………………140
20.2.3 新的语义种类 …………………………………………………………..141
20.3 ES2015 语言特性 …………………………………………………………………142
20.3.1 Realms、Jobs、Proxies 和元对象编程(MOP) …………….142
xxvi | JavaScript二十年
20.3.2 块级声明作用域 ……………………………………………………….147
20.3.3 类 ……………………………………………………………………………151
20.3.4 模块 ………………………………………………………………………..156
20.3.5 箭头函数 …………………………………………………………………159
20.3.6 其他特性 …………………………………………………………………161
20.3.7 延期和被放弃的特性 …………………………………………………162
20.4 Harmony 转译器 ………………………………………………………………….162
20.5 完成 ECMAScript 2015 ………………………………………………………..163
第 21 章 总结 ……………………………………………………………………….. 166
致谢 ……………………………………………………………………………………… 168
附录 A 登场人物 ……………………………………………………………………. 170
附录 B 登场组织 ……………………………………………………………………. 175
附录 C 术语表 ………………………………………………………………………. 177
附录 D 缩略语和首字母缩写词 …………………………………………………. 182
附录 E 时间线 ………………………………………………………………………. 184
附录 F 1995 年 12 月 4 日的 JavaScript 公告 ………………………………. 200