內容介紹
《JavaScript核心概念及實踐》不僅幫助讀者迅速掌握JavaScript基礎知識和核心技術,而且通過實例講解如何將這些知識和技術理解套用到實際工作中,提升編程能力,以簡潔、優美的代碼開發出功能強大且更易於維護和擴展的應用程式。全書共16章和兩個附錄,可以分為兩個部分。第一部分包括第1章到第7章,側重介紹JavaScript語言的核心概念,為讀者學習後續內容打下牢固基礎;這部分介紹了JavaScript的對象、函式、數組、正則表達式、閉包等主題,以及相關的重要知識點。第二部分包括第8章到第16章,著重討論了JavaScript支持的編程範式、核心概念的延伸、JavaScript的前端開發框架、測試框架、JavaScript引擎、JavaScript在Java,C、C++等套用中的使用,以及伺服器端的JavaScript套用。這部分內容更注重實例,幫助讀者將核心概念引用到實際工作中。附錄A介紹了一些常用JavaScript技巧;附錄B簡單介紹了jQuery並給出了一個套用實例。作者介紹
邱俊濤,ThoughtWorks軟體工程師。喜歡編程,尤其喜歡編程帶來的成就感。對動態語言、函式式編程等有濃厚的興趣。喜歡開源軟體,喜歡知識分享,並從他人的分享中學習。崇尚簡單、輕量的設計和模式。個人主頁:http://icodeit.org。微博:@正反反長。作品目錄
目 錄第1章 概述 1
1.1 JavaScript簡史 1
1.1.1 動態網頁 1
1.1.2 瀏覽器之戰 2
1.2 JavaScript語言特性 3
1.2.1 動態性 3
1.2.2 弱類型 5
1.2.3 面向對象 6
1.2.4 解釋與編譯 7
1.3 JavaScript套用範圍 7
1.3.1 客戶端JavaScript 7
1.3.2 伺服器端JavaScript 10
1.3.3 其他套用中的JavaScript 12
第2章 基本概念 16
2.1 數據類型 16
2.1.1 數據類型 16
2.1.2 對象類型 17
2.1.3 基本類型與對象間的轉換 18
2.1.4 類型的判斷 20
2.2 變數 21
2.2.1 基本類型和引用類型 21
2.2.2 變數的作用域 22
2.3 運算符 23
2.3.1 中括弧運算符([]) 23
2.3.2 點運算符(.) 24
2.3.3 相等與等同運算符 25
第3章 對象 28
3.1 JavaScript對象 28
3.1.1 對象的屬性 29
3.1.2 屬性與變數 29
3.1.3 原型對象及原型鏈 30
3.1.4 this指針 32
3.2 使用對象 33
3.3 對象字面量 34
3.4 JSON 36
第4章 函式 38
4.1 函式對象 38
4.1.1 創建函式 38
4.1.2 函式的參數 40
4.2 函式作用域 41
4.2.1 詞法作用域 41
4.2.2 調用對象 43
4.3 函式上下文 44
4.4 call和apply 44
4.5 使用函式 45
4.5.1 賦值給一個變數 45
4.5.2 賦值為對象的屬性 46
4.5.3 作為參數傳遞 46
4.5.4 作為函式的返回值 47
第5章 數組 48
5.1 數組的特性 48
5.2 使用數組 50
5.2.1 數組的基本方法使用 50
5.2.2 刪除數組元素 53
5.2.3 遍歷數組 55
第6章 正則表達式 57
6.1 正則表達式基礎概念 57
6.1.1 元字元與特殊字元 58
6.1.2 範圍及重複 58
6.1.3 分組與引用 61
6.2 使用正則表達式 62
6.2.1 創建正則表達式 62
6.2.2 String中的正則表達式 64
6.3 實例:JSFilter 65
第7章 閉包 67
7.1 閉包的特性 67
7.2 閉包的用途 69
7.2.1 匿名自執行函式 69
7.2.2 快取 70
7.2.3 實現封裝 71
7.3 應該注意的問題 72
7.3.1 記憶體泄漏 72
7.3.2 上下文的引用 73
第8章 面向對象的JavaScript 75
8.1 原型繼承 75
8.1.1 引用 77
8.1.2 new操作符 78
8.2 封裝 79
8.3 工具包Base 80
8.4 實例:事件分發器 83
第9章 函式式的JavaScript 92
9.1 匿名函式 93
9.2 高階函式 93
9.2.1 JavaScript中的高階函式 94
9.2.2 C語言中的高階函式 95
9.2.3 Java中的高階函式 96
9.3 閉包與柯里化 97
9.3.1 柯里化的概念 98
9.3.2 柯里化的套用 98
9.4 一些例子 99
9.4.1 函式式編程風格 99
9.4.2 Y-結合子 101
9.4.3 其他實例 103
第10章 核心概念深入 104
10.1 原型鏈 104
10.1.1 原型對象與原型鏈 104
10.1.2 構造器 107
10.2 執行期上下文 108
10.3 活動對象 111
10.4 作用域鏈 111
10.5 this值 113
10.5.1 詞法作用域 113
10.5.2 this的上下文 114
第11章 客戶端的JavaScript 116
11.1 客戶端JavaScript執行環境 116
11.2 文檔對象模型(DOM) 117
11.3 事件驅動模型 118
11.4 與伺服器端互動(Ajax) 119
11.5 調試 122
11.5.1 FireFox 122
11.5.2 Chrome 124
11.6 客戶端的MVC 126
11.7 JavaScript/Ajax框架 128
第12章 客戶端的MVC框架:Backbone.js 130
12.1 Backbone背景簡介 130
12.1.1 Backbone模型 131
12.1.2 Backbone集合 132
12.1.3 Backbone視圖 133
12.1.4 Backbone路由 134
12.2 Backbone實例1:使用客戶端本地存儲 135
12.2.1 客戶端存儲 135
12.2.2 運行結果 136
12.2.3 數據模型 137
12.2.4 視圖及模板 137
12.3 Backbone實例2:與伺服器端互動 141
12.3.1 後台服務 141
12.3.2 客戶端代碼修改 142
第13章 JavaScript測試 144
13.1 單元測試框架QUnit 144
13.1.1 QUnit簡介 144
13.1.2 QUnit示例 144
13.2 Jasmine 150
13.2.1 Jasmine基本概念 151
13.2.2 Jasmine的spy 155
13.2.3 Jasmine 實例 159
13.2.4 測試複雜的場景 162
第14章 JavaScript引擎 165
14.1 使用SpiderMonkey 165
14.1.1 SpiderMonkey簡介 165
14.1.2 JavaScript對象與C對象間的轉換關係 166
14.1.3 基本代碼模板 167
14.1.4 執行JavaScript代碼 170
14.1.5 C程式調用JavaScript函式 172
14.1.6 JavaScript程式調用C函式 173
14.1.7 在C程式中定義JavaScript對象 175
14.2 SpiderMonkey的實現簡介 177
14.2.1 虛擬機概述 177
14.2.2 SpiderMonkey體系結構 177
14.2.3 jsval類型 178
14.2.4 對象 179
14.3 V8引擎概覽 179
14.3.1 V8引擎基本概念 179
14.3.2 V8引擎使用示例 181
14.3.3 使用C++變數 181
14.3.4 調用C++函式 183
14.3.5 使用C++類 184
第15章 Java套用中的JavaScript 188
15.1 腳本化基礎 188
15.2 使用Rhino引擎 189
15.2.1 直接對腳本求值 189
15.2.2 傳遞Java對象 190
15.2.3 調用腳本內的函式 191
15.2.4 在腳本中使用Java資源 193
15.2.5 實現Java接口 194
15.3 實例:sTodo 195
15.3.1 sTodo簡介 195
15.3.2 sTodo的外掛程式機制 197
15.3.3 sTodo中的腳本 199
15.4 實例:可程式計算器phoc 201
15.4.1 phoc簡介 201
15.4.2 phoc中的腳本 203
第16章 伺服器端的JavaScript 207
16.1 node.js 207
16.1.1 node.js簡介 207
16.1.2 node.js 使用示例 208
16.1.3 node.js實例 211
16.1.4 使用Jasmine測試 215
16.2 CouchDB 217
16.2.1 CouchDB簡介 217
16.2.2 CouchDB使用 218
16.2.3 CouchDB實例 220
16.3 MongoDB 227
16.3.1 基本操作 227
16.3.2 map/reduce 230
附錄A 一些JavaScript技巧 232
A.1 創建對象 232
A.2 訪問對象的屬性 232
A.3 遍歷對象 233
A.4 名稱空間 234
附錄B 前端JavaScript框架:jQuery 236
B.1 jQuery簡介 236
B.2 jQuery基礎 239
B.2.1 jQuery選擇器 239
B.2.2 對DOM的操作 241
B.2.3 對CSS的操作 242
B.2.4 事件處理 244
B.2.5 實用函式 246
B.3 jQuery實例 247