JavaScript編程精解(原書第3版)(簡體書)
商品資訊
系列名:Web開發技術叢書
ISBN13:9787111648369
出版社:機械工業出版社
作者:(美)馬爾奇‧哈弗貝克
譯者:盧濤;李穎
出版日:2020/04/01
裝訂/頁數:平裝/333頁
規格:24cm*17cm (高/寬)
版次:一版
商品簡介
作者簡介
名人/編輯推薦
目次
商品簡介
本書第3版深入研究JavaScript語言,詳細介紹如何編寫漂亮、高效的代碼。更新的內容包括:類表示法、箭頭函數、迭代器、異步函數、模板字符串和塊作用域等功能的全新內容。 本書通過大量示例進行講解,並提供大量習題和完整項目案例,為讀者提供了編寫自己的程序的實踐經驗。書中不僅介紹JavaScript語言的基本結構以及控制結構、函數和數據結構,還詳細介紹錯誤處理和錯誤修復、模塊化和異步編程,以及Web瀏覽器編程。
作者簡介
馬爾奇·哈弗貝克(Marijn Haverbeke),
全球知名JavaScript程序員,通曉多種編程語言,在Web開發方面積累了豐富的經驗,在JavaScript領域頗有影響力。
他研究過各種軟件系統,從數據庫到編譯器再到編輯器均有涉及。此外,他創建並維護著多個流行的開源項目,如CodeMirror編輯器和Tern類型推導引擎等。
全球知名JavaScript程序員,通曉多種編程語言,在Web開發方面積累了豐富的經驗,在JavaScript領域頗有影響力。
他研究過各種軟件系統,從數據庫到編譯器再到編輯器均有涉及。此外,他創建並維護著多個流行的開源項目,如CodeMirror編輯器和Tern類型推導引擎等。
名人/編輯推薦
本書從JavaScript的基本語言特性入手,提綱挈領地介紹JavaScript的主要功能和特色,包括基本結構、函數、數據結構、高階函數、錯誤處理、正則表達式、模塊、異步編程、瀏覽器文檔對象模型、事件處理、繪圖、HTTP表單、Node等,可以幫助你循序漸進地掌握基本的編程概念、技術和思想。而且書中提供5個項目實戰章節,涉及路徑查找、自製編程語言、平臺交互遊戲、繪圖工具和動態網站,可以幫助你快速上手實際的項目。此外,本書還介紹了JavaScript性能優化的方法論、思路和工具,以幫助我們開發高效的程序。
本書第3版包含了JavaScript語言ES6規範的新功能,如綁定、常量、類、promise等。通過本書的學習,你將瞭解JavaScript語言的新發展,編寫出更強大的代碼。
本書的在線網站提供了所有源代碼,你可以通過在線沙箱來編輯、運行代碼,並實時查看輸出結果。
★ “這是我所見過的把編程概念解釋得極其恰當的書之一。”
――Sandra Henry-Stocker,IT World
★“如果選擇這本書開始你的JavaScript學習,你可以很快學到很多技術知識和編程智慧。”
――Michael J. Ross,Web開發人員和Slashdot貢獻者
★ “因為學了這本書,我成為一名更好的架構師、作者、導師和開發人員。這是一本比肩Flannagan和 Crockford的著作的書籍。”
――Angus Croll,Twitter的開發人員
★ “對任何編程語言和整個編程的極好的介紹。”
――Jan Lehnardt,Hoodie的聯合創始人和歐盟JSConf的組織者
★ “每當人們問我如何正確學習JavaScript時,我都會推薦這本書。”
――Chris Williams,美國JSConf的組織者
★ “這是我讀過的極好的的JavaScript書之一。”
――Rey Bango,JQuery 團隊成員和微軟客戶端Web通信程序經理
★“這是一部非常好的JavaScript指南,更重要的是,它還是很好的編程指南。”
――Ben Nadel, Epicenter Consulting首席軟件工程師
★“一本好書,適合那些沒有JavaScript經驗,甚至沒有編程經驗的人閱讀。”
――Nicholas Zakas,《高性能JavaScript》和《JavaScript面向對象精要》的作者。
★“如果你是JavaScript的新手,我建議你做的第一件事就是打開本書並閱讀作者對該語言的介紹。”
――英國CNET
本書第3版包含了JavaScript語言ES6規範的新功能,如綁定、常量、類、promise等。通過本書的學習,你將瞭解JavaScript語言的新發展,編寫出更強大的代碼。
本書的在線網站提供了所有源代碼,你可以通過在線沙箱來編輯、運行代碼,並實時查看輸出結果。
★ “這是我所見過的把編程概念解釋得極其恰當的書之一。”
――Sandra Henry-Stocker,IT World
★“如果選擇這本書開始你的JavaScript學習,你可以很快學到很多技術知識和編程智慧。”
――Michael J. Ross,Web開發人員和Slashdot貢獻者
★ “因為學了這本書,我成為一名更好的架構師、作者、導師和開發人員。這是一本比肩Flannagan和 Crockford的著作的書籍。”
――Angus Croll,Twitter的開發人員
★ “對任何編程語言和整個編程的極好的介紹。”
――Jan Lehnardt,Hoodie的聯合創始人和歐盟JSConf的組織者
★ “每當人們問我如何正確學習JavaScript時,我都會推薦這本書。”
――Chris Williams,美國JSConf的組織者
★ “這是我讀過的極好的的JavaScript書之一。”
――Rey Bango,JQuery 團隊成員和微軟客戶端Web通信程序經理
★“這是一部非常好的JavaScript指南,更重要的是,它還是很好的編程指南。”
――Ben Nadel, Epicenter Consulting首席軟件工程師
★“一本好書,適合那些沒有JavaScript經驗,甚至沒有編程經驗的人閱讀。”
――Nicholas Zakas,《高性能JavaScript》和《JavaScript面向對象精要》的作者。
★“如果你是JavaScript的新手,我建議你做的第一件事就是打開本書並閱讀作者對該語言的介紹。”
――英國CNET
目次
【第一部分】 語言
第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
第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
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

