JavaScript 二十年
內容描述
本書主要講述了從 1995 年到 2015 年這20年間,JavaScript在創建、設計和演變方面所經歷的過程。全書分為4個部分,每個部分都涵蓋了 JavaScript 發展和演化的一個主要階段,其中不僅涉及語言發展的技術細節,還介紹了人們和組織如何在競爭與合作中逐漸塑造 JavaScript 語言的故事。本書適合JavaScript初學者和開發人員閱讀和使用,也適合非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 對數值屬性鍵的特殊處理........................................ .............2
2.7.7 原始值的屬性........................................... .............................26
2.7.8 JavaScript 中的HTML 註釋.......................................... ........26
第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
第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
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
作者介紹
Allen Wirfs-Brock是編程語言及實現方面的專家,在開發編譯器、虛擬機、編程環境和完整的計算機系統方面有著豐富的經驗。
他是面向對象編程技術興起時期的技術創新者和業務領導者,並深度參與了Smalltalk編程語言的開發過程。
在2009-2015年,他是ECMAScript語言規範的項目編輯。
Brendan Eich是Brave Software和Basic Attention Token的聯合創始人兼CEO。
他曾擔任Mozilla公司的CTO和CEO。
在此之前,他是Mozilla項目和基金會的聯合創始人。
在Mozilla工作期間,他協助推出了屢獲殊榮的Firefox網絡瀏覽器。
Brendan Eich也是JavaScript的發明者,這是互聯網上使用最廣泛的編程語言之一。