JavaScript 權威指南, 7/e

(美)大衛·弗拉納根(David Flanagan)著

買這商品的人也買了...

商品描述

本書介紹JavaScript語言和由瀏覽器與Node實現的JavaScript API。
本書適合有一定編程經驗、想學習JavaScript讀者,也適合已經在使用JavaScript但希望更深入地理解進而真正掌握這門語言的程序員。

本書的目標是全面地講解JavaScript語言,對JavaScript程序中可能用到的重要的客戶端API和服務器端API提供深入的介紹。
本書篇幅較長,內容非常詳盡,相信認真研究本書的讀者都能獲益良多。

作者簡介

David Flanagan從1995起就開始使用JavaScript並寫作本書的第1版。
他擁有麻省理工學院計算機科學與工程學位,目前是VMware的一名軟件工程師。

目錄大綱

前言1
第1章簡介5
1.1探索7
1.2 Hello World8
1.3之旅9
1.4示例:字符頻率柱形圖14
1.5小結17

第2章詞法結構18
2.1程序的文本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章標準庫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章異步307
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章瀏覽器中的367
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服務器端515
16.1 Node編程基礎516
16.2 Node默認異步520
16.3緩衝區523
16.4 shi件與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章工具和擴展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:中的標記表達式577
17.8使用Flow檢查類型581
17.9小結595

關於作者596
關於封面596

與圖形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