JavaScript編程精解(原書第2版)

JavaScript編程精解(原書第2版) pdf epub mobi txt 電子書 下載 2025

[美] 馬爾奇·哈弗貝剋 著,盧譽聲 譯
圖書標籤:
  • JavaScript
  • 編程
  • 前端開發
  • Web開發
  • 算法
  • 數據結構
  • ES6
  • 現代JavaScript
  • 入門
  • 進階
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111518600
版次:1
商品編碼:11807430
品牌:機工齣版
包裝:平裝
叢書名: Web開發技術叢書
開本:16開
齣版時間:2015-11-01
用紙:膠版紙
頁數:325

具體描述

編輯推薦

  

世JavaScript之父Brendan Eich高度評價並強力推薦

JavaScript編程原理與運用規則完美融閤,讀者將在遊戲式開發中學會JavaScript程序設計,是係統學習JavaScript程序設計的作品


  

JavaScript幾乎可以說是所有現代Web應用程序的核心,無論是社交應用程序,還是時下流行的瀏覽器遊戲。雖說學習和使用JavaScript的成本並不高,但是它卻是一種靈活且復雜的編程語言,你可以用它來構建功能全麵且復雜的應用程序。
  
  本書深入剖析瞭JavaScript編程語言的內部細節,並闡述瞭編寫優雅高效代碼的方法。作者Marijn Haverbeke從示例代碼開始講解,逐步實現瞭完整的項目,與此同時作者還提供瞭一係列習題供讀者練習,你可以從中學習並瞭解如何編寫自己的程序。
  
  通過閱讀本書,你將學習和瞭解到:
  編程的基本要素,這其中包括語法、控製流和數據。
  如何組織和創建麵嚮對象的代碼以及函數式編程的技術。
  如何在瀏覽器當中編寫腳本和創建基本Web應用程序。
  如何使用DOM與瀏覽器進行高效交互。
  如何通過Node.js來構建服務器和工具。
  
  本書的第2版經過全麵的更新和修訂,覆蓋瞭JavaScript的絕大多數語言特性,涉及Web編程和Node.js服務器編程,以及JavaScript性能優化等。本書的在綫網站提供瞭所有源代碼,你可以通過在綫沙箱來編輯、運行代碼,並實時查看輸齣結果。

內容簡介

  

  JavaScript是一門流行的程序設計語言,在這個Web的時代中,其地位已經變得越來越舉足輕重。本書從JavaScript的基本語言特性入手,詳細講解JavaScript的語法,並通過一些實例,講解使用其解決實際問題的方法與思路。同時又結閤網頁開發與Node.js講解JavaScript在Web前端開發與服務端開發中的作用,可以為讀者快速學習掌握JavaScript提供係統指導。

??

  本書共分為三個部分。第一部分主要討論JavaScript的語言特性。第1~4章介紹JavaScript語言的基本結構,包括控製結構、函數和數據結構。第5~6章深入探討函數與對象,並介紹如何控製代碼復雜度。第7章是實例項目,介紹如何使用基本的JavaScript語法解決實際問題。第8章介紹如何處理錯誤,第9章介紹正則錶達式與JavaScript中正則錶達式的用法。第10章介紹如何在JavaScript中構建使用模塊。第11章作為第一部分的結尾,介紹如何設計並構建一個程序語言解析器。第二部分主要講解如何在瀏覽器中運用JavaScript。第12章介紹JavaScript與瀏覽器的曆史與關係。第13章介紹瞭瀏覽器的DOM模型。第14章介紹如何使用JavaScript處理DOM事件。第15章介紹如何通過操縱DOM來編寫一個瀏覽器中的2D遊戲。第16章介紹HTML5中的畫布,並介紹如何使用JavaScript繪圖。第17章介紹HTTP協議,以及如何使用JavaScript進行網絡通信。第18章介紹錶單與其使用方法。第19章是另一個實例項目,介紹如何開發一個基於HTML的繪圖程序,是對第二部分的總結。第三部分是提高部分。第20章介紹如何使用Node.js開發Web服務,體現齣JavaScript的強大威力。第21章介紹如何使用JavaScript完成一個完整的Web應用。最後一章則介紹提升JavaScript性能的一些基本原則與方法,並給齣一些實例。

作者簡介

  作者簡介

  馬爾奇·哈弗貝剋(Marijn Haverbeke),

  JavaScript程序員,通曉多種編程語言,在Web開發方麵積纍瞭豐富的經驗,在JavaScript領域頗有影響力。此外,他創建並維護著多個流行的開源項目,如CodeMirror編輯器和Tern類型推導引擎等。


  譯者簡介

  盧譽聲,軟件工程師,擅長C++多綫程編程和實時分布式係統架構。曾在思科係統(中國)研發中心雲産品研發部工作多年。他曾參與服務器後端、前端以及SDK的設計與研發工作,在大規模分布式係統設計與實現、性能調優、高可用性和自動化等方麵積纍瞭豐富的敏捷實踐與開發經驗。現在在美國某IT/互聯網公司工作,從事C++底層通信係統設計與研發。此外,他從事C/C++研發工作,對Java、JavaScript、Lua以及移動開發平颱等也有一定研究。

目錄

譯者序
贊譽
前言
第一部分 JavaScript編程語言
第1章 值、類型和運算符 2
1.1 值 2
1.2 數字 3
1.3 字符串 5
1.4 一元運算符 6
1.5 布爾值 6
1.6 未定義值 8
1.7 自動類型轉換 8
1.8 本章小結 10
第2章 程序結構 11
2.1 錶達式和語句 11
2.2 變量 12
2.3 關鍵字和保留字 13
2.4 環境 14
2.5 函數 14
2.6 console.log函數 14
2.7 返迴值 15
2.8 prompt和confirm函數 15
2.9 控製流 16
2.10 條件執行 16
2.11 while和do循環 17
2.12 代碼縮進 19
2.13 for循環 19
2.14 跳齣循環 20
2.15 更新變量的簡便方法 21
2.16 switch條件分支 21
2.17 大寫 22
2.18 注釋 22
2.19 本章小結 23
2.20 習題 23
第3章 函數 25
3.1 定義函數 25
3.2 參數和作用域 26
3.3 嵌套作用域 27
3.4 函數值 28
3.5 符號聲明 29
3.6 調用棧 29
3.7 可選參數 31
3.8 閉包 31
3.9 遞歸 32
3.10 添加新函數 35
3.11 函數及其副作用 37
3.12 本章小結 37
3.13 習題 38
第4章 數據結構:對象和數組 39
4.1 鬆鼠人 39
4.2 數據集 40
4.3 屬性 41
4.4 方法 41
4.5 對象 42
4.6 可變性 44
4.7 鬆鼠人的記錄 45
4.8 計算關聯性 47
4.9 對象映射 48
4.10 分析結果 49
4.11 詳解數組 50
4.12 字符串及其屬性 51
4.13 arguments對象 52
4.14 Math對象 53
4.15 全局對象 55
4.16 本章小結 55
4.17 習題 55
第5章 高階函數 58
5.1 抽象 59
5.2 數組遍曆抽象 59
5.3 高階函數 61
5.4 參數傳遞 62
5.5 JSON 63
5.6 數組過濾 64
5.7 使用map函數轉換數組 65
5.8 使用reduce進行數據匯總 65
5.9 可組閤性 66
5.10 性能開銷 67
5.11 曾曾曾曾……祖父 67
5.12 綁定 70
5.13 本章小結 70
5.14 習題 71
第6章 深入理解對象 72
6.1 曆史 72
6.2 方法 73
6.3 原型 74
6.4 構造函數 75
6.5 覆蓋繼承的屬性 76
6.6 原型汙染 77
6.7 無原型對象 79
6.8 多態 79
6.9 繪製錶格 80
6.10 Getter與Setter 84
6.11 繼承 85
6.12 instanceof運算符 87
6.13 本章小結 87
6.14 習題 88
第7章 項目實戰:構建電子生態
 係統 89
7.1 定義 89
7.2 描述世界 90
7.3 動物的編程接口 91
7.4 World對象 93
7.5 this及其作用域 94
7.6 賦予生命 96
7.7 動物的爬行動作 98
7.8 更多動物 98
7.9 更逼真的生態係統仿真 99
7.10 動作處理器 100
7.11 充實這個新世界 102
7.12 讓虛擬世界生機盎然 103
7.13 習題 104
第8章 處理缺陷與錯誤 105
8.1 開發人員造成的問題 105
8.2 嚴格模式 106
8.3 測試 107
8.4 調試 108
8.5 錯誤傳播 109
8.6 異常 110
8.7 異常後清理 111
8.8 選擇性捕獲 112
8.9 斷言 114
8.10 本章小結 115
8.11 習題 115
第9章 正則錶達式 116
9.1 創建正則錶達式 116
9.2 匹配測試 117
9.3 匹配字符集 117
9.4 部分模式重復 118
9.5 子錶達式分組 119
9.6 匹配和分組 119
9.7 日期類型 120
9.8 單詞和字符串邊界 121
9.9 選項模式 122
9.10 匹配原理 122
9.11 迴溯 123
9.12 replace方法 125
9.13 貪婪模式 126
9.14 動態創建RegExp對象 127
9.15 search方法 128
9.16 lastIndex屬性 128
9.17 解析INI文件 129
9.18 國際化字符 131
9.19 本章小結 131
9.20 習題 132
第10章 模塊 134
10.1 模塊的好處 134
10.2 使用函數作為命名空間 136
10.3 使用對象作為接口 137
10.4 與全局作用域分離 138
10.5 將數據作為代碼執行 138
10.6 require函數 139
10.7 模塊加載過慢的問題 140
10.8 接口設計 143
10.9 本章小結 144
10.10 習題 145
第11章 項目實戰:開發編程語言 147
11.1 解析 147
11.2 代碼執行器 150
11.3 特殊形式 151
11.4 環境 153
11.5 函數 154
11.6 編譯 155
11.7 站在彆人的肩膀上 155
11.8 習題 156
第二部分 在瀏覽器中使用JavaScript
第12章 瀏覽器中的JavaScript 160
12.1 網絡和Internet 160
12.2 Web 161
12.3 HTML 162
12.4 HTML和JavaScript 164
12.5 沙箱 164
12.6 兼容性與瀏覽器之爭 165
第13章 文檔對象模型 166
13.1 文檔結構 166
13.2 樹 167
13.3 標準 168
13.4 通過樹結構訪問節點 169
13.5 查找元素 170
13.6 修改文檔 170
13.7 創建節點 171
13.8 屬性 173
13.9 布局 175
13.10 樣式 176
13.11 層疊樣式 177
13.12 查詢選擇器 178
13.13 位置與動畫 179
13.14 本章小結 181
13.15 習題 181
第14章 處理事件 183
14.1 事件處理器 183
14.2 事件與DOM節點 184
14.3 事件對象 184
14.4 傳播 185
14.5 默認動作 186
14.6 按鍵事件 187
14.7 鼠標點擊 188
14.8 鼠標移動 189
14.9 滾動事件 191
14.10 焦點事件 192
14.11 加載事件 192
14.12 腳本執行時間綫 193
14.13 設置定時器 193
14.14 降頻 194
14.15 本章小結 195
14.16 習題 196
第15章 項目實戰:平颱遊戲 198
15.1 遊戲 198
15.2 實現技術 199
15.3 關卡 199
15.4 讀取關卡 200
15.5 活動元素 201
15.6 當封裝成為負擔 203
15.7 繪圖 204
15.8 動作與衝突 208
15.9 活動元素與動作 209
15.10 跟蹤按鍵 213
15.11 運行遊戲 213
15.12 習題 215
第16章 使用canvas繪圖 217
16.1 SVG 217
16.2 canvas元素 218
16.3 填充與描邊 219
16.4 路徑 220
16.5 麯綫 221
16.6 繪製餅狀圖 224
16.7 文本 225
16.8 圖像 225
16.9 變換 227
16.10 存儲與清除圖像的變換狀態 228
16.11 迴到遊戲 230
16.12 選擇圖像接口 234
16.13 本章小結 235
16.14 習題 235
第17章 HTTP協議概述 237
17.1 協議簡介 237
17.2 瀏覽器和HTTP 238
17.3 XMLHttpRequest 240
17.4 發送請求 240
17.5 異步請求 241
17.6 獲取XML數據 242
17.7 HTTP沙箱 242
17.8 抽象請求 243
17.9 Promise 245
17.10 運用HTTP 247
17.11 安全和HTTPS 247
17.12 本章小結 248
17.13 習題 248
第18章 錶單和錶單域 250
18.1 域 250
18.2 聚焦 252
18.3 禁用域 252
18.4 作為整體的錶單 253
18.5 文本域 254
18.6 選擇框和單選框 255
18.7 選擇域 256
18.8 文件域 257
18.9 客戶端保存數據 259
18.10 本章小結 261
18.11 習題 261
第19章 項目實戰:繪圖程序 263
19.1 實現 263
19.2 建立DOM 264
19.3 基礎 265
19.4 工具選擇 265
19.5 顔色和畫刷大小 267
19.6 保存 269
19.7 加載圖片文件 270
19.8 完成 271
19.9 習題 272
第三部分 高級主題
第20章 Node.js 276
20.1 背景 276
20.2 異步性 277
20.3 node命令 278
20.4 模塊 278
20.5 使用NPM安裝 279
20.6 文件係統模塊 281
20.7 HTTP模塊 282
20.8 流 283
20.9 簡單的文件服務器 284
20.10 錯誤處理 288
20.11 本章小結 290
20.12 習題 290
第21章 項目實戰:技能分享網站 293
21.1 設計 293
21.2 長輪詢 294
21.3 HTTP接口 295
21.4 服務器 297
21.5 客戶端 303
21.6 習題 309
第22章 JavaScript和性能 311
22.1 分階段編譯 311
22.2 圖形布局 312
22.3 定義圖 313
22.4 第一個力導嚮布局函數 314
22.5 性能分析 316
22.6 函數內聯 317
22.7 退化迴舊式循環 318
22.8 避免工作 319
22.9 産生更少的垃圾 319
22.10 垃圾迴收 320
22.11 修改對象 321
22.12 動態類型 322
22.13 本章小結 323
22.14 習題 324










前言/序言

  本書講解如何通過編程來讓計算機執行任務。時至今日,計算機就像螺絲刀一樣隨處可見,但相比於螺絲刀而言,計算機中包含瞭更多隱含的復雜性,因此也更加難以理解和操作。許多人仍對計算機感到陌生和恐懼。  一邊是有血有肉的具備社交纔能和空間推理能力的人類,另一邊是冰冷的處理二進製數據的計算機,這兩者該如何進行交互呢?我們已經找到瞭兩種高效的方式來搭建人類與計算機之間通信的橋梁。種方法是模擬現實世界來構建與計算機交互的接口,這樣我們就可以動動手指來操作計算機屏幕上的圖形。對於一般的機器交互來說,這種方式非常實用。  但是,我們在使用這種方法的情況下,隻能通過點擊操作實現接口設計者預先定義好的功能。幸運的是,我們可以利用人類的語言天賦來教會計算機一門語言,實現開放式接口。比如指揮計算機執行任意一種任務。  人類語言可以用多種方式來組閤單詞和短語,錶述齣不同的信息。雖然計算機語言的語法靈活性沒那麼高,但也是采用瞭類似的原則進行設計的。  在過去的20年中,越來越多的人開始使用計算機來進行簡易的運算,曾經作為默認人機交互方式的命令行接口,現如今已經被圖形界麵所取代。但隻要你細心觀察,就會發現基於語言的接口仍在那裏。比如JavaScript語言,你幾乎可以在每個網頁瀏覽器中找到它的身影,而消費者的設備都可以執行這門語言。  本書的主要內容就是介紹這門語言,在閱讀完本書後,相信你可以通過該語言來對計算機編程。  關於程序設計不憤不啓,不悱不發,舉一隅不以三隅反,則不復也。  —孔子除瞭講解JavaScript之外,本書也會介紹一些程序設計的基本原則。程序設計還是比較復雜的。編程的基本規則通常簡單清晰,但在這些基本規則之上構建的程序卻容易變得復雜,導緻程序産生瞭自己的規則和復雜性。即便程序是按照你自己的思路去構建的,你也有可能迷失在代碼之間。  在閱讀本書時,你有可能會覺得書中的概念難以理解。如果你剛剛開始學習編程,那麼你估計還有不少東西需要掌握呢。如果你想將所學知識融會貫通,那麼就需要去多參考和學習一些資料。  是否付齣必要的努力完全取決於你自己。當你閱讀本書的時候發現任何難點,韆萬不要輕易就對自己的能力下結論。隻要能堅持下去,你就是好樣的。稍做休息,復習一下所學的知識點,確保自己閱讀並理解瞭示例程序和相關的練習。學習是一項艱巨的任務,但你掌握的所有知識都屬於你自己,而且今後的學習道路會愈加輕鬆。  計算機程序員對其創造的宇宙負全部責任,因為他們是創造者。以計算機程序的形式,可創造齣無限復雜的宇宙。  —約瑟夫·魏澤鮑姆《計算機的威力與人類的理性》一個程序有很多含義:它是開發人員編寫的一段文本、計算機執行的一段指令集閤、計算機內存當中的數據以及控製內存中數據的操作集閤。我們通常很難將程序與我們日常生活中熟悉的事物進行對比。有一種錶麵上比較恰當的比喻,即將程序視作包含許多組件的機器,為瞭讓機器正常工作,這些組件通過內部通信來實現整個機器的正常運轉。  計算機正是運行這些非物質機器的載體。計算機本身並不能實現多麼復雜的功能,但計算機之所以有用是因為它們的運算速度非常快。而程序的作用就是將這些看似簡單的動作組閤起來,然後實現復雜的功能。  對於我們當中的某些人來說,編寫計算機程序是一種極大的樂趣。程序是開發人員思想的結晶。編寫程序不需要什麼物質投入,它很輕量級,通過我們的雙手創造。  但如果不稍加注意,程序的體積和復雜度就會失去控製,甚至代碼的編寫者也會感到迷惑。在可控的範圍內編寫程序是編程過程中首要解決的問題。當程序運行時,一切都是那麼美好。編程的精粹就在於如何更好地控製復雜度。質量高的程序的復雜度都不會太高。  很多開發人員認為,控製程序復雜度的好方法就是避免使用不熟悉的技術。他們製定瞭嚴格的規則(“佳實踐”),定義瞭程序應該編寫成什麼樣子。而激進分子更是覺得,如果程序沒有按照這些規則進行編寫,那麼編寫這些程序的開發人員就是不閤格的。  這極大地降低瞭程序的豐富程度!將程序簡化成一些直截瞭當的代碼,並完全禁止人們編寫豐富多樣的程序。正是因為程序當中有那麼多不同的思想和未經探索的領域,纔使得編程技術如此令人著迷。誠然,程序設計的世界中充滿各色陷阱,讓一個缺乏經驗的程序員陷入其中非常危險,但這也隻是意味著在前行過程中你需要小心謹慎,時刻保證頭腦清醒,畢竟我們還要麵對許多新挑戰,探索更多新的領域。而那些不願探索的人隻會停滯不前,淡忘編程的樂趣,厭倦自己的事業。  為什麼編程語言如此重要在計算技術發展伊始,並沒有編程語言這個概念。程序看起來就像這樣:  該程序計算數字1~10之和,並打印齣結果:1 + 2 + … + 10 = 55。該程序可以運行在一個簡單的機器上。在早期計算機上編程時,我們需要在正確的位置設置大量開關陣列,或在紙帶上穿孔並將紙帶輸入計算機中。你可以想象這個過程是多麼冗長乏味且易於齣錯。即便是編寫非常簡單的程序,也需要有經驗的人耗費很大精力纔能完成。編寫復雜的程序則更是難上加難。  當然瞭,手動輸入這些晦澀難懂的位序列(1和0)來編寫程序的確能讓程序員感到很有成就感,而且能給你的職業帶來極大的滿足感。  在上麵的程序中,每行都包含一條指令。我們可以用中文來描述這些指令:  1. 將數字0存儲在內存地址中第0的位置。  2. 將數字1存儲在內存地址中第1的位置。  3. 將內存地址中第1的位置的值存儲在內存地址中第2的位置。  4. 將內存地址中第2的位置的值減去數字11。  5. 如果內存地址第2的位置的值是0,則跳轉到指令9。  6. 將內存地址第1的位置的值加到內存地址第0的位置上。  7. 將內存地址第1的位置上的值加上數字1。  8. 跳轉到指令3。  9. 輸齣內存地址第0的位置上的值。  雖說這已經比一大堆位序列要好讀瞭許多,但仍然不盡如人意。或許使用名字代替數字作為指令和內存地址的標示符,可以進一步提高代碼的可讀性。  現在你能看齣該程序是如何工作的嗎?前兩行代碼初始化兩個內存位置的值:total用於保存纍加計算結果,而count則用於記錄當前數字。你可能覺得compare的那行代碼看起來有些奇怪。程序想根據count是否等於11來決定是否應該停止運行。因為我們的機器相當原始,所以隻能測試一個數字是否為0,並根據測試結果做齣判斷(是否跳轉)。因此程序用名為compare的內存位置存放count – 11的值,並根據該值是否為0決定是否跳轉。接下來兩行將count的值纍加到結果上,並將count加1,直到count等於11為止。  下麵使用JavaScript重新編寫瞭上麵的程序:  這個版本的程序得到瞭一些改進。更為重要的是,我們再也不需要指定程序如何來迴跳轉瞭,而是由while語句負責完成這個任務。隻要我們給予的條件成立,while語句就會不停地執行其下方的語句塊(包裹在大括號中)。而我們給予的條件是count <= 10,意思是“count小於等於10”。我們再也不需要創建臨時的值並將其與0比較,那樣的代碼十分煩瑣。編程語言的一項職責就是幫助我們處理這些煩瑣無趣的邏輯。  在程序的結尾,也就是while語句結束後,我們使用console.log操作來輸齣結果。  後,我們恰好有range和sum這類方便的操作。下麵代碼中的range函數用於創建數字集閤,sum函數用於計算數字集閤之和:  我們可以從這裏瞭解到,同一個程序可以用不同的方式進行編寫,代碼的長度可長可短,而可讀性可高可低。個版本的程序晦澀難懂,而後一個版本的程序則接近於人類語言的錶達方式:將1~10範圍內的數字之和記錄下來(我們會在後麵的章節中詳細介紹如何編寫sum和range這樣的函數)。  優秀的編程語言可以為開發人員提供更高層次的抽象,使用類似於人類語言的方式來與計算機進行交互。它還可以提供便捷的語句塊(比如while和console.log),以避免開發人員編寫煩瑣的代碼細節。它甚至可以讓你定義自己的語句塊(比如sum和range函數),並提供方便的方法來編寫這些語句塊。  什麼是JavaScriptJavaScript誕生於1995年。起初,Netscape Navigator瀏覽器將其運用在網頁上添加程序。自此以後,各類主流圖形網頁瀏覽器均采用瞭JavaScript。JavaScript使得現代網頁應用程序成為可能—使用JavaScript可以直接與用戶交互,從而避免每一個動作都需要重新載入頁麵。但有許多傳統網站也會使用JavaScript來提供實時交互以及更加智能的錶單功能。  JavaScript其實和名為Java的程序設計語言沒有任何關係。起瞭這麼一個相似的名字完全是市場考慮使然,這並非是一個明智的決定。當JavaScript齣現時,Java語言已在市場上得到大力推廣且擁有瞭極高人氣,因此某些人覺得依附於Java的成功是個不錯的主意。而我們現在已經無法擺脫這個名字瞭。  在JavaScript被廣泛采用之後,為瞭確保所有聲稱支持JavaScript的軟件都使用同一種語言,ECMA國際製訂瞭一份標準文檔來描述JavaScript的工作行為,標準化完成後,該標準被稱為ECMAScript標準。實際上,術語ECMAScript和 JavaScript可以交換使用。它們不過是同一種語言的兩個名字而已。  許多人會說JavaScript這樣那樣的不好。這其中有很多這樣的言論都是正確的。當被要求次使用JavaScript編寫代碼時,我當時就覺得這門語言難以駕馭。JavaScript接受我輸入的任何代碼,但是又使用和我的想法完全不同的方式來解釋代碼。由於我沒有任何綫索知道我之前做瞭什麼,因此我需要做齣更多工作,但這也就存在一個實際問題:我們可以自由使用JavaScript,而這種自由卻幾乎沒有限度。這種設計其實是希望初學者更容易使用JavaScript編寫程序。但實際上,係統不會指齣我們錯在何處,因此從程序中找齣問題變得更加棘手。  但這種自由性也有其優勢,許多技術在更為嚴格的語言中不可能實現,而在JavaScript中則留下瞭實現的餘地,正如你看到的那樣(比如第10章),有些優勢可以彌補JavaScript的一些缺點。在正確地學習JavaScript並使用它工作瞭一段時間後,我真正喜歡上瞭JavaScript。  JavaScript版本眾多。大約在2000~2010年間,這正是JavaScript飛速發展的時期,瀏覽器支持多的是ECMAScript 3。在此期間,ECMA著手製定ECMAScript 4,這是一個雄心勃勃的版本,ECMA計劃在這個版本中加入許多徹底的改進與擴展。但由於ECMAScript 3被廣泛使用,這種過於激進的修改必然會遭遇重重阻礙,後ECMA不得不於2008年放棄瞭版本4的製定,因此ECMA於2009年發布瞭改進較少的ECMAScript 5。目前所有主流瀏覽器均支持ECMAScript 5,因此本書著重介紹該版本。版本6的製定工作即也將完成,而且一些瀏覽器已經開始支持該版本的一些新特性瞭。  Web瀏覽器並不是唯一一個可以運行JavaScript的平颱。有些數據庫,比如MongoDB和CouchDB,也使用JavaScript作為腳本語言和查詢語言。一些桌麵和服務器開發的平颱,特彆是Node.js項目(第20章介紹),也在瀏覽器之外提供瞭強大的JavaScript開發環境。  代碼及相關工作代碼是程序的文本內容。本書多數章節都介紹瞭大量代碼。根據個人經驗,閱讀與編寫代碼是學習程序設計過程中必不可少的一部分,因此萬萬不可走馬觀花般地閱讀代碼,而應該認真閱讀並理解每個示例。剛開始使用這種方式可能會速度較慢並為代碼所睏惑,但我堅信你很快就可以熟能生巧。對待習題的方法也應該一樣。除非你確實已經編寫代碼解決瞭問題,否則不要假設你已經理解瞭問題。  建議讀者應嘗試在實際的JavaScript解釋器中執行習題代碼。這樣一來,你就可以馬上獲知代碼工作情況的反饋,而且我希望讀者去做更多的試驗,而不僅僅局限於習題的要求。  可以在http://eloquentjavascript.net/中查閱本書的在綫版本,並運行和實驗本書中的代碼。也可以在在綫版本中點擊任何代碼示例來編輯、運行並查看其産生的輸齣。在做習題時,你可以訪問http://eloquentjavascript.net/code/,該網址會提供每個習題的初始代碼,讓你專心於解答習題。  如果想要在本書提供的沙箱以外執行本書代碼,需要稍加注意。許多的示例是獨立的,而且可以在任何JavaScript環境下運行。但後續章節的代碼大多數都是為特定環境(瀏覽器或者Node.js)編寫的,而且隻能在這些特定環境下執行代碼。此外,許多章節定義瞭更大的程序,這些章節中齣現的代碼片段會互相依賴或是依賴於一些外部文件。本書網站的沙箱提供瞭zip壓縮文件的鏈接,該文件包含瞭所有運行特定章節代碼所需的腳本和數據文件。  章節介紹本書包括三個部分。前11章討論JavaScript語言本身的一些特性。接下來的8章討論網頁瀏覽器和JavaScript在網頁編程中的實踐。後兩章專門講解另一個使用JavaScript編程的環境—Node.js。  縱觀本書,共有5個項目實戰章,用於講解規模較大的示例程序,你可以通過這些章來仔細品味真實的編程過程。根據項目齣現次序,我們會陸續構建人工生命模擬項目、程序設計語言項目、平颱遊戲項目、繪圖程序和一個動態網站項目。  本書介紹編程語言時,首先使用4章來介紹JavaScript語言的基本結構,包括控製結構(比如在本前言中看到的while單詞)、函數(編寫你自己的操作)和數據結構。此後你就可以編寫簡單的程序瞭。接下來,第5章和第6章介紹函數和對象的運用技術,以編寫更加抽象的代碼並以此來控製復雜度。  介紹完個項目實戰之後,將會繼續講解處理錯誤與修復的方法、正則錶達式(處理文本數據的重要工具)與模塊化(解決復雜度的問題)。第二個項目實戰章則是對本書部分的總結。  第二部分(第12章~第19章),闡述瞭瀏覽器JavaScript中的一些工具。你將會學到在屏幕上顯示某些元素的方法(第13章與第16章),響應用戶輸入的方法(第14章與18章)和通過網絡通信的方法(第17章)。該部分又有兩個項目實戰章。  此後,第20章闡述Node.js,而第21章使用該工具構建一個簡單的網頁係統。  後,第22章講解一些在優化JavaScript程序運行速度時需要注意的事項。  本書版式約定本書中存在大量代碼,程序(包括你迄今為止看到的一些示例)代碼的字體如下所示:  為瞭展示程序産生的輸齣,本書常在代碼後編寫代碼期望輸齣,輸齣結果前會加上兩個反斜杠和一個箭頭。  後,祝各位好運!



用戶評價

評分

強製評論真是非常智障的一個産品體驗

評分

好書,值得看,好書,值得看

評分

很實用,對於瞭解js有很大的幫助

評分

錯彆字太多瞭,比如184和185頁,時間觸發應該是事件觸發,組織段落上的事件應該是阻止段落上的事件。翻譯地太沒有責任心瞭。

評分

不錯很好的書

評分

剛買迴來 還沒看 先囤著、

評分

書是好書,書皺瞭,

評分

包裝不錯

評分

很棒

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有