寫給大忙人的現代 JavaScript (Modern JavaScript for the Impatient)
內容描述
本書是一本簡明的現代 JavaScript 教程,不僅涵蓋函數式編程、JS 語法、JS 庫等基礎性內容,還介紹了國際化、異步編程、標準模塊系統、元編程等較為復雜的內容,並附加了 TypeScript 的相關知識。部分章節根據其難度的不同設置了相應的圖標,以便讀者選擇性學習。本書力求使初學者不被過時的 JavaScript 所困擾,能夠在實踐中高效地學會使用現代 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
作者介紹
凱・霍斯特曼(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底層原理的深入理解、新特性的及時更新長期關注,與本書定位高度契合,對本書翻譯品質的保障有很好的加持效果。