JavaScript 編程精解, 3/e

Marijn Haverbeke 盧濤,李穎

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

商品描述

JavaScript幾乎可以說是所有現代Web應用程序的核心,無論是社交應用程序,還是時下流行的瀏覽器遊戲。
雖說學習和使用JavaScript的成本並不高,但是它卻是一種靈活且複雜的編程語言,
你可以用它來構建功能全面且複雜的應用程序。

本書的第3版進行了全面的更新和修訂,以反映JavaScript和Web瀏覽器的當前進展,涵蓋類表示法、
箭頭函數、迭代器、異步函數、模板字符串和塊作用域等功能的全新內容。
而且還增加大量的新練習來測試你的技能,讓你保持在正軌上。

本書深入剖析了JavaScript編程語言的內部細節,並闡述了編寫優雅高效代碼的方法。
作者Marijn Haverbeke從示例代碼開始講解,逐步實現了完整的項目,
與此同時作者還提供了一系列習題供讀者練習,你可以從中學習並了解如何編寫自己的程序。

首先,你將學習JavaScript語言的基本結構,以及控制結構、函數和數據結構。
然後在進入Web瀏覽器編程之前,你將學習錯誤處理與bug修復模塊化和異步編程。
在構建諸如瀏覽器遊戲、簡單的編程語言和繪畫程序的項目時,你將學習如何:

●了解編程的基本要素,包括語法、控制和數據

●使用面向對象和函數式編程技術組織和闡明代碼

●編寫瀏覽器腳本並開發基本的Web應用程序

●高效地使用DOM與瀏覽器進行交互

●利用Node.js構建服務器和實用程序

作者簡介

Marijn Haverbeke

全球知名JavaScript程序員,通曉多種編程語言,
在Web開發方面積累了豐富的經驗,在JavaScript領域頗有影響力。

他研究過各種軟件系統,從數據庫到編譯器再到編輯器均有涉及。
此外,他創建並維護著多個流行的開源項目,如CodeMirror編輯器和Tern類型推導引擎等。

目錄大綱

【第一部分】 語言
●第1章值、類型和運算符 2
1.1 值 2
1.2 數字 3
1.3 字符串 4
1.4 一元運算符 6
1.5 布爾值 6
1.5.1 比較 6
1.5.2 邏輯運算符 7
1.6 空值 8
1.7 自動類型轉換 8
1.8 小結10

●第2章程序結構11
2.1 表達式和語句11
2.2 綁定12
2.3 綁定名稱13
2.4 環境13
2.5 函數14
2.6 console.log函數14
2.7 返回值15
2.8 控制流15
2.9 條件執行15
2.10 while和do循環17
2.11 縮進代碼18
2.12 for循環19
2.13 跳出循環19
2.14 簡潔地更新綁定20
2.15 使用switch調度值20
2.16 首字母大寫21
2.17 註釋22
2.18 小結22
2.19 習題22

●第3章函數24
3.1 定義一個函數24
3.2 綁定和作用域25
3.3 作為值的函數27
3.4 聲明表示法27
3.5 箭頭函數28
3.6 調用棧28
3.7 可選參數29
3.8 閉包30
3.9 遞歸31
3.10 函數的增長方式34
3.11 函數和副作用36
3.12 小結36
3.13 習題37

●第4章數據結構:對象和數組38
4.1 松鼠人38
4.2 數據集39
4.3 屬性39
4.4 方法40
4.5 對象41
4.6 可變性43
4.7 松鼠人的日誌44
4.8 計算相關性45
4.9 數組循環46
4.10 最終分析47
4.11 其他數組方法48
4.12 字符串及其屬性50
4.13 剩餘參數51
4.14 Math對象52
4.15 解構53
4.16 JSON 54
4.17 小結54
4.18 習題55

●第5章高階函數57
5.1 抽象化58
5.2 提取重複的內容58
5.3 高階函數59
5.4 語言字符集數據集60
5.5 過濾數組61
5.6 用map轉換62
5.7 用reduce匯總62
5.8 組合性63
5.9 字符串和字符代碼64
5.10 文本識別66
5.11 小結67
5.12 習題67

●第6章對象的秘密69
6.1 封裝69
6.2 方法70
6.3 原型71
6.4 類72
6.5 類表示法73
6.6 覆蓋派生屬性74
6.7 映射75
6.8 多態性76
6.9 符號76
6.10 迭代器接口78
6.11 讀取器、設置器和靜態79
6.12 繼承81
6.13 instanceof運算符82
6.14 小結82
6.15 習題83

●第7章項目:機器人85
7.1 村莊Meadowf?ield 85
7.2 任務86
7.3 持久化數據88
7.4 模擬89
7.5 郵車的路線90
7.6 尋找路線91
7.7 習題92

●第8章缺陷和錯誤94
8.1 語言94
8.2 嚴格模式95
8.3 類型96
8.4 測試96
8.5 調試97
8.6 錯誤傳播98
8.7 異常99
8.8 異常後清理100
8.9 選擇性捕獲102
8.10 斷言103
8.11 小結104
8.12 習題104

●第9章正則表達式106
9.1 創建正則表達式106
9.2 匹配測試107
9.3 字符集107
9.4 模式的重複部分108
9.5 對子表達式分組109
9.6 匹配和組109
9.7 Date類110
9.8 單詞和字符串邊界111
9.9 選擇模式112
9.10 匹配機制112
9.11 回溯113
9.12 replace方法114
9.13 貪心116
9.14 動態創建RegExp對象117
9.15 search方法117
9.16 lastIndex屬性118
9.17 解析INI文件119
9.18 國際字符121
9.19 小結122
9.20 習題123

●第10章模塊124
10.1 模塊作為構件124
10.2 包125
10.3 簡易模塊126
10.4 將數據作為代碼執行127
10.5 CommonJS 127
10.6 ECMAScript模塊129
10.7 構建和捆綁130
10.8 模塊設計131
10.9 小結132
10.10 習題133

●第11章異步編程134
11.1 異步134
11.2 烏鴉技術135
11.3 回調136
11.4 promise 138
11.5 失敗139
11.6 構建網絡很困難140
11.7 promise集合142
11.8 網絡泛洪142
11.9 消息路由143
11.10 異步函數145
11.11 生成器147
11.12 事件循環148
11.13 異步bug 149
11.14 小結150
11.15 習題150

●第12章項目:編程語言152
12.1 解析152
12.2 求解器156
12.3 特殊形式157
12.4 環境158
12.5 函數159
12.6 編譯160
12.7 作弊161
12.8 習題161

【第二部分】 瀏覽器
●第13章瀏覽器中的JavaScript 164
13.1 網絡和互聯網164
13.2 Web 165
13.3 HTML 166
13.4 HTML和JavaScript 168
13.5 沙盒168
13.6 兼容性和瀏覽器大戰169

●第14章文檔對像模型170
14.1 文檔結構170
14.2 樹171
14.3 標準172
14.4 通過樹結構173
14.5 尋找元素174
14.6 更改文檔175
14.7 創建節點175
14.8 屬性177
14.9 佈局177
14.10 樣式179
14.11 層疊樣式180
14.12 查詢選擇器181
14.13 定位和動畫182
14.14 小結184
14.15 習題184

●第15章處理事件186
15.1 事件處理程序186
15.2 事件和DOM節點187
15.3 事件對象188
15.4 傳播188
15.5 默認操作189
15.6 按鍵事件190
15.7 指針事件191
15.8 滾動事件194
15.9 焦點事件195
15.10 加載事件196
15.11 事件和事件循環196
15.12 計時器197
15.13 限頻198
15.14 小結199
15.15 習題199

●第16章項目:平台遊戲201
16.1 遊戲201
16.2 技術202
16.3 關卡202
16.4 讀取關卡203
16.5 演員204
16.6 封裝是一種負擔207
16.7 繪圖207
16.8 動作和碰撞211
16.9 演員的更新214
16.10 跟踪按鍵215
16.11 運行遊戲216
16.12 習題218

●第17章在畫布上繪圖219
17.1 SVG 219
17.2 畫布元素220
17.3 線和麵221
17.4 路徑222
17.5 曲線223
17.6 繪製餅圖225
17.7 文本226
17.8 圖片227
17.9 轉換228
17.10 存儲和清除轉換230
17.11 回到遊戲231
17.12 選擇圖形界面236
17.13 小結236
17.14 習題237

●第18章HTTP和表單239
18.1 協議239
18.2 瀏覽器和HTTP 241
18.3 fetch 242
18.4 HTTP沙盒243
18.5 欣賞HTTP 243
18.6 安全性和HTTPS 244
18.7 表單域244
18.8 焦點246
18.9 禁用域247
18.10 表單整體247
18.11 文本域248
18.12 複選框和單選按鈕249
18.13 選擇域250
18.14 文件域251
18.15 在客戶端存儲數據252
18.16 小結254
18.17 習題255

●第19章項目:像素繪圖程序257
19.1 組件257
19.2 狀態259
19.3 DOM的建立260
19.4 畫布261
19.5 應用程序263
19.6 繪圖工具264
19.7 保存和加載267
19.8 撤銷歷史記錄269
19.9 讓我們畫吧270
19.10 為什麼這麼難271
19.11 習題271

【第三部分】 Node
●第20章Node.js 276
20.1 背景276
20.2 node命令277
20.3 模塊277
20.4 使用NPM安裝278
20.5 文件系統模塊280
20.6 HTTP模塊281
20.7 流283
20.8 文件服務器284
20.9 小結288
20.10 習題289

●第21章項目:技能分享網站290
21.1 設計290
21.2 長輪詢291
21.3 HTTP接口292
21.4 服務器293
21.5 客戶端299
21.6 習題304

●第22章JavaScript性能305
22.1 分階段編譯305
22.2 圖的佈局306
22.3 定義圖307
22.4 力導向佈局308
22.5 避免工作310
22.6 分析器312
22.7 函數內聯313
22.8 減少垃圾314
22.9 垃圾收集314
22.10 動態類型315
22.11 小結316
22.12 習題317
附錄部分習題解答提示318