第1部分 JavaScript概要  001
         第1章  JavaScript概要  002
         1.1  JavaScript概要  002
         1.2  JavaScript的曆史  002
         1.3  ECMAScript  003
         1.3.1  JavaScript的標準化  003
         1.3.2  被放棄的ECMAScript第4版  004
         1.4  JavaScript的版本  004
         1.5  JavaScript實現方式  005
         1.6  JavaScript運行環境  006
         1.6.1  核心語言  006
         1.6.2  宿主對象  007
         1.7  JavaScript相關環境  007
         1.7.1  庫  007
         1.7.2  源代碼壓縮  007
         1.7.3  集成開發環境  008
         第2部分 JavaScript的語言基礎  009
         第2章  JavaScript基礎  010
         2.1  JavaScript的特點  010
         2.2  關於編排格式  011
         2.3  變量的基礎  012
         2.3.1  變量的使用方法  012
         2.3.2  省略var  013
         2.3.3  常量  013
         2.4  函數基礎  013
         2.4.1  函數的定義  013
         2.4.2  函數的聲明與調用  014
         2.4.3  匿名函數  014
         2.4.4  函數是一種對象  015
         2.5  對象的基礎  016
         2.5.1  對象的定義  016
         2.5.2  對象字麵量錶達式與對象的使用  016
         2.5.3  屬性訪問  017
         2.5.4  屬性訪問(括號方式)  017
         2.5.5  方法  018
         2.5.6  new錶達式  018
         2.5.7  類與實例  018
         2.5.8  對類的功能的整理  018
         2.5.9  對象與類型  019
         2.6  數組的基礎  019
         第3章  JavaScript的數據類型  021
         3.1  數據類型的定義  021
         3.1.1  在數據類型方麵與Java作比較  021
         3.1.2  基本數據類型和引用類型  022
         3.2  內建數據類型概要  022
         3.3  字符串型  023
         3.3.1  字符串字麵量  023
         3.3.2  字符串型的運算  024
         3.3.3  字符串型的比較  024
         3.3.4  字符串類(String類)  025
         3.3.5  字符串對象  026
         3.3.6  避免混用字符串值和字符串對象  027
         3.3.7  調用String函數  027
         3.3.8  String類的功能  027
         3.3.9  非破壞性的方法  029
         3.4  數值型  029
         3.4.1  數值字麵量  029
         3.4.2  數值型的運算  030
         3.4.3  有關浮點數的常見注意事項  030
         3.4.4  數值類(Number類)  031
         3.4.5  調用Number函數  031
         3.4.6  Number類的功能  032
         3.4.7  邊界值與特殊數值  033
         3.4.8  NaN  034
         3.5  布爾型  035
         3.5.1  布爾值  035
         3.5.2  布爾類(Boolean類) 036
         3.5.3  Boolean類的功能  036
         3.6  null型  037
         3.7  undefined型  037
         3.8  Object類型  038
         3.9  數據類型轉換  039
         3.9.1  從字符串值轉換為數值  039
         3.9.2  從數值轉換為字符串值  040
         3.9.3  數據類型轉換的慣用方法  040
         3.9.4  轉換為布爾型  041
         3.9.5  其他的數據類型轉換  042
         3.9.6  從Object類型轉換為基本數據類型  042
         3.9.7  從基本數據類型轉換為Object類型  043
         第4章  語句、錶達式和運算符  045
         4.1  錶達式和語句的構成  045
         4.2  保留字  045
         4.3  標識符  046
         4.4  字麵量  047
         4.5  語句  047
         4.6  代碼塊(復閤語句)  048
         4.7  變量聲明語句  048
         4.8  函數聲明語句  048
         4.9  錶達式語句  048
         4.10  空語句  049
         4.11  控製語句  049
         4.12  if-else語句  050
         4.13  switch-case語句  052
         4.14  循環語句  054
         4.15  while語句  055
         4.16  do-while語句  056
         4.17  for語句  057
         4.18  for in語句  058
         4.18.1  數列與for in語句  059
         4.18.2  在使用for in語句時需要注意的地方  060
         4.19  for each in語句  060
         4.20  break語句  061
         4.21  continue語句  061
         4.22  通過標簽跳轉  062
         4.23  return語句  063
         4.24  異常  063
         4.25  其他  064
         4.26  注釋  065
         4.27  錶達式  065
         4.28  運算符  065
         4.29  錶達式求值  066
         4.30  運算符的優先級以及結閤律  066
         4.31  算術運算符  067
         4.32  字符串連接運算符  068
         4.33  相等運算符  068
         4.34  比較運算符  069
         4.35  in運算符  070
         4.36  instanceof運算符  071
         4.37  邏輯運算符  071
         4.38  位運算符  072
         4.39  賦值運算符  072
         4.40  算術賦值運算符  073
         4.41  條件運算符(三目運算符)  073
         4.42  typeof運算符  073
         4.43  new運算符  074
         4.44  delete運算符  074
         4.45  void運算符  074
         4.46  逗號(,)運算符  074
         4.47  點運算符和中括號運算符  075
         4.48  函數調用運算符  075
         4.49  運算符使用以及數據類型轉換中需要注意的地方075
         第5章  變量與對象  076
         5.1  變量的聲明  076
         5.2  變量與引用  076
         5.2.1  函數的參數(值的傳遞)  078
         5.2.2  字符串與引用  079
         5.2.3  對象與引用相關的術語總結  079
         5.3  變量與屬性  080
         5.4  變量的查找  081
         5.5  對變量是否存在的檢驗  081
         5.6  對象的定義  082
         5.6.1  抽象數據類型與麵嚮對象  082
         5.6.2  實例間的協作關係與麵嚮對象  083
         5.6.3  JavaScript的對象  083
         5.7  對象的生成  083
         5.7.1  對象字麵量  083
         5.7.2  構造函數與new錶達式  085
         5.7.3  構造函數與類的定義  087
         5.8  屬性的訪問  087
         5.8.1  屬性值的更新  088
         5.8.2  點運算符與中括號運算符在使用上的區彆  088
         5.8.3  屬性的枚舉  089
         5.9  作為關聯數組的對象  089
         5.9.1  關聯數組  089
         5.9.2  作為關聯數組的對象的注意點  090
         5.10  屬性的屬性  091
         5.11  垃圾迴收  092
         5.12  不可變對象  092
         5.12.1  不可變對象的定義  092
         5.12.2  不可變對象的作用  092
         5.12.3  實現不可變對象的方式  093
         5.13  方法  094
         5.14  this引用  094
         5.14.1  this引用的規則  094
         5.14.2  this引用的注意點  095
         5.15  apply與call  096
         5.16  原型繼承  097
         5.16.1  原型鏈  097
         5.16.2  原型鏈的具體示例  099
         5.16.3  原型繼承與類  100
         5.16.4  對於原型鏈的常見誤解以及_proto_屬性  100
         5.16.5  原型對象  101
         5.16.6  ECMAScript第5版與原型對象  101
         5.17  對象與數據類型  102
         5.17.1  數據類型判定(constructor屬性)  102
         5.17.2  constructor屬性的注意點  102
         5.17.3  數據類型判定(instance運算與isPrototypeOf方法)  103
         5.17.4  數據類型判定(鴨子類型)  103
         5.17.5  屬性的枚舉(原型繼承的相關問題)  104
         5.18  ECMAScript第5版中的Object類  105
         5.18.1  屬性對象  105
         5.18.2  訪問器的屬性  106
         5.19  標準對象  108
         5.20  Object類  108
         5.21  全局對象  110
         5.21.1  全局對象與全局變量  110
         5.21.2  Math對象  111
         5.21.3  Error對象  112
         第6章  函數與閉包  113
         6.1  函數聲明語句與匿名函數錶達式  113
         6.2  函數調用的分類  113
         6.3  參數與局部變量  114
         6.3.1  arguments對象  114
         6.3.2  遞歸函數  114
         6.4  作用域  115
         6.4.1  瀏覽器與作用域  116
         6.4.2  塊級作用域  116
         6.4.3  let與塊級作用域  117
         6.4.4  嵌套函數與作用域  119
         6.4.5  變量隱藏  119
         6.5  函數是一種對象  120
         6.6  Function類  122
         6.7  嵌套函數聲明與閉包  123
         6.7.1  對閉包的初步認識  123
         6.7.2  閉包的原理  123
         6.7.3  閉包中需要注意的地方  126
         6.7.4  防範命名空間的汙染  127
         6.7.5  閉包與類  129
         6.8  迴調函數設計模式  130
         6.8.1  迴調函數與控製反轉  130
         6.8.2  JavaScript與迴調函數  131
         第7章  數據處理  134
         7.1  數組  134
         7.1.1  JavaScript的數組  134
         7.1.2  數組元素的訪問  135
         7.1.3  數組的長度  136
         7.1.4  數組元素的枚舉  136
         7.1.5  多維數組  137
         7.1.6  數組是一種對象  138
         7.1.7  Array類  139
         7.1.8  數組對象的意義  140
         7.1.9  數組的習慣用法  141
         7.1.10  數組的內部實現  144
         7.1.11  數組風格的對象  145
         7.1.12  迭代器  145
         7.1.13  生成器  147
         7.1.14  數組的內包  149
         7.2  JSON  149
         7.2.1  JSON字符串  149
         7.2.2  JSON對象  150
         7.3  日期處理  151
         7.4  正則錶達式  153
         7.4.1  正則錶達式的定義  153
         7.4.2  正則錶達式相關的術語  154
         7.4.3  正則錶達式的語法  154
         7.4.4  JavaScript中的正則錶達式156
         7.4.5  正則錶達式程序設計  157
         7.4.6  字符串對象與正則錶達式對象  158
         第3部分 客戶端JavaScript  161
         第8章  客戶端JavaScript與HTML  162
         8.1  客戶端JavaScript的重要性  162
         8.1.1  Web應用程序的發展  162
         8.1.2  JavaScript的性能提升  162
         8.1.3  JavaScript的作用  163
         8.2  HTML與JavaScript  163
         8.2.1  網頁顯示過程中的處理流程  163
         8.2.2  JavaScript的錶述方式及其執行流程  163
         8.2.3  執行流程的小結  166
         8.3  運行環境與開發環境  166
         8.3.1  運行環境  166
         8.3.2  開發環境  166
         8.4  調試  167
         8.4.1  alert  167
         8.4.2  console  167
         8.4.3  onerror  169
         8.4.4  Firebug, Web Inspector (Developer Tools), Opera Dragonfly  169
         8.5  跨瀏覽器支持  171
         8.5.1  應當提供支持的瀏覽器  171
         8.5.2  實現方法  172
         8.6  Window對象  174
         8.6.1  Navigator對象  174
         8.6.2  Location對象  174
         8.6.3  History對象  175
         8.6.4  Screen對象  176
         8.6.5  對Window對象的引用  176
         8.6.6  Document對象  176
         第9章  DOM  177
         9.1  DOM的定義  177
         9.1.1  DOM Level 1  177
         9.1.2  DOM Level 2  177
         9.1.3  DOM Level 3  178
         9.1.4  DOM的錶述方式  178
         9.2  DOM的基礎  179
         9.2.1  標簽、元素、節點  179
         9.2.2  DOM操作  179
         9.2.3  Document對象  179
         9.3  節點的選擇  180
         9.3.1  通過ID檢索  180
         9.3.2  通過標簽名檢索  180
         9.3.3  通過名稱檢索  184
         9.3.4  通過類名檢索  184
         9.3.5  父節點、子節點、兄弟節點  185
         9.3.6  XPath  187
         9.3.7  Selector  API  189
         9.4  節點的創建與新增  190
         9.5  節點的內容更改  190
         9.6  節點的刪除  190
         9.7  innerHTML/textContent  190
         9.7.1  innerHTML  190
         9.7.2  textContent  191
         9.8  DOM操作的性能  191
         第10章  事件  192
         10.1  事件驅動程序設計  192
         10.2  事件處理程序/事件偵聽器的設定  192
         10.2.1  指定為HTML元素的屬性193
         10.2.2  指定為DOM元素的屬性  194
         10.2.3  通過EventTarget.addEventListener()進行指定  194
         10.2.4  事件處理程序/事件偵聽器內的this引用  196
         10.3  事件的觸發  196
         10.4  事件的傳播  196
         10.4.1  捕獲階段  197
         10.4.2  目標階段  197
         10.4.3  事件冒泡階段  197
         10.4.4  取消  197
         10.5  事件所具有的元素  198
         10.6  標準事件  199
         10.6.1  DOM Level 2中所定義的事件  199
         10.6.2  DOM Level 3中所定義的事件  200
         10.7  自定義事件  202
         第11章  客戶端JavaScript實踐  203
         11.1  樣式  203
         11.1.1  樣式的變更方法  203
         11.1.2  位置的設定  207
         11.1.3  位置  208
         11.1.4  動畫  209
         11.2  AJAX  210
         11.2.1  異步處理的優點  210
         11.2.2  XMLHttpRequest  210
         11.2.3  基本的處理流程  210
         11.2.4  同步通信  212
         11.2.5  超時  212
         11.2.6  響應  213
         11.2.7  跨源限製  214
         11.2.8  跨源通信  214
         11.2.9  JSONP  214
         11.2.10  iframe攻擊(iframe hack)  215
         11.2.11  window.postMessage218
         11.2.12  XMLHttpRequest Level 2  219
         11.2.13  跨源通信的安全問題  219
         11.3  錶單  219
         11.3.1  錶單元素  219
         11.3.2  錶單控件  221
         11.3.3  內容驗證  221
         11.3.4  可用於驗證的事件  222
         11.3.5  使用錶單而不産生頁麵跳轉的方法  222
         第12章  庫  224
         12.1  使用庫的原因  224
         12.2  jQuery的特徵  224
         12.3  jQuery的基本概念  225
         12.3.1  使用實例  225
         12.3.2  鏈式語法  226
         12.4  $函數  227
         12.4.1  抽取與選擇器相匹配的元素  227
         12.4.2  創建新的DOM元素  227
         12.4.3  將已有的DOM元素轉換為jQuery對象  227
         12.4.4  對DOM構造完成後的事件偵聽器進行設定  227
         12.5  通過jQuery進行DOM操作  228
         12.5.1  元素的選擇  228
         12.5.2  元素的創建·添加·替換·刪除  230
         12.6  通過jQuery處理事件  231
         12.6.1  事件偵聽器的注冊·刪除  231
         12.6.2  事件專用的事件偵聽器注冊方法  232
         12.6.3  ready()方法  232
         12.7  通過jQuery對樣式進行操作  233
         12.7.1  基本的樣式操作  233
         12.7.2  動畫  234
         12.8  通過jQuery進行AJAX操作  235
         12.8.1  AJAX()函數  235
         12.8.2  AJAX()的包裝函數  236
         12.8.3  全局事件  237
         12.9  Deferred  237
         12.9.1  Deferred的基本概念  237
         12.9.2  狀態遷移  238
         12.9.3  後續函數  239
         12.9.4  並行處理  241
         12.10  jQuery插件  241
         12.10.1  使用jQuery插件  241
         12.10.2  創建jQuery插件  242
         12.11  與其他庫共同使用  243
         12.11.1  $對象的衝突  243
         12.11.2  避免$對象的衝突  243
         12.12  庫的使用方法  244
         第13章  HTML5概要  272
         13.1  HTML5的曆史  246
         13.2  HTML5的現狀  247
         13.2.1  瀏覽器的支持情況  247
         13.2.2  Web應用程序與原生應用程序  248
         13.3  HTML5的概要  248
         第14章  Web應用程序  250
         14.1  History API  250
         14.1.1  History API的定義  250
         14.1.2  哈希片段  250
         14.1.3  接口  251
         14.2  ApplicationCache  255
         14.2.1  關於緩存管理  255
         14.2.2  緩存清單文件  255
         14.2.3  ApplicationCache  API  258
         14.2.4  在綫與離綫  259
         第15章  與桌麵應用的協作  260
         15.1  Drag Drop API  260
         15.1.1  Drag Drop API的定義260
         HTML5  245
         第4部分 HTML5  245
         15.1.2  接口  261
         15.1.3  基本的拖動與釋放  262
         15.1.4  自定義顯示  263
         15.1.5  文件的Drag-In/ Drag-Out  265
         15.2  File API  267
         15.2.1  File API的定義  267
         15.2.2  File對象  267
         15.2.3  FileReader  269
         15.2.4  data URL  271
         15.2.5  FileReaderSync  273
         第16章  存儲  274
         16.1  Web Storage  274
         16.1.1  Web Storage的定義  274
         16.1.2  基本操作  275
         16.1.3  storage事件  277
         16.1.4  關於Cookie  277
         16.1.5  命名空間的管理  278
         16.1.6  版本的管理  279
         16.1.7  對localStorage的模擬279
         16.2  Indexed Database  280
         16.2.1  Indexed Database的定義  280
         16.2.2  基礎架構  280
         16.2.3  連接數據庫  281
         16.2.4  對象存儲的創建  281
         16.2.5  數據的添加·刪除·引用  282
         16.2.6  索引的創建  283
         16.2.7  數據的檢索與更新  284
         16.2.8  數據的排序  285
         16.2.9  事務  285
         16.2.10  同步API  286
         第17章  WebSocket  287
         17.1  WebSocket概要  287
         17.1.1  WebSocket的定義  287
         17.1.2  現有的通信技術  287
         17.1.3  WebSocket的標準  290
         17.1.4  WebSocket的執行方式  290
         17.2  基本操作  291
         17.2.1  連接的建立  291
         17.2.2  消息的收發  291
         17.2.3  連接的切斷  292
         17.2.4  連接的狀態確認  292
         17.2.5  二進製數據的收發  293
         17.2.6  WebSocket實例的屬性一覽  293
         17.3  WebSocket實踐  294
         17.3.1  Node.js的安裝  294
         17.3.2  服務器端的實現  295
         17.3.3  客戶端的實現  295
         17.3.4  客戶端的實現2  296
         第18章  Web Workers  298
         18.1  Web Workers概要  298
         18.1.1  Web Workers的定義  298
         18.1.2  Web Workers的執行方式  298
         18.2  基本操作  299
         18.2.1  工作綫程的創建  299
         18.2.2  主綫程一側的消息收發  299
         18.2.3  工作綫程一側的消息收發  300
         18.2.4  工作綫程的刪除  300
         18.2.5  外部文件的讀取  301
         18.3  Web  Worker實踐  301
         18.3.1  工作綫程的使用  301
         18.3.2  中斷對工作綫程的處理  302
         18.4  共享工作綫程  304
         18.4.1  共享工作綫程的定義  304
         18.4.2  共享工作綫程的創建  304
         18.4.3  共享工作綫程的消息收發  305
         18.4.4  共享工作綫程的刪除  306
         18.4.5  共享工作綫程的應用實例  306
         第5部分 Web API  309
         第19章  Web API的基礎  310
         19.1  Web API與Web服務  310
         19.2  Web API的曆史  311
         19.2.1  Web抓取  311
         19.2.2  語義網  311
         19.2.3  XML  311
         19.2.4  Atom  312
         19.2.5  JSON  312
         19.2.6  SOAP  313
         19.2.7  REST  313
         19.2.8  簡單總結  313
         19.3  Web API的組成  314
         19.3.1  Web API的形式  314
         19.3.2  Web API的使用  315
         19.3.3  RESTful API  315
         19.3.4  API密鑰  316
         19.4  用戶驗證與授權  317
         19.4.1  Web應用程序的會話管理  317
         19.4.2  會話管理與用戶驗證  318
         19.4.3  Web API與權限  319
         19.4.4  驗證與授權  320
         19.4.5  OAuth  321
         第20章  Web API的實例  323
         20.1  Web API的分類  323
         20.2  Google Translate API  324
         20.2.1  準備  325
         20.2.2  執行方式的概要  325
         20.2.3  使用瞭Web API的代碼示例  326
         20.2.4  微件(Google Translate Element)  327
         20.3  Google Maps API  328
         20.3.1  Google Static Maps API  328
         20.3.2  我的地圖  329
         20.3.3  Google Maps API的概要  330
         20.3.4  簡單的Google Maps API示例  330
         20.3.5  事件  331
         20.3.6  Geolocation API與Geocoding API  333
         20.4  Yahoo! Flickr  334
         20.4.1  Flickr Web API的使用  335
         20.4.2  Flickr Web API的使用實例  336
         20.5  Twitter  337
         20.5.1  搜索API  337
         20.5.2  REST API  338
         20.5.3  Twitter JS API @anywhere  339
         20.5.4  Twitter Widget  341
         20.6  Facebook  341
         20.6.1  Facebook應用的發展曆程  341
         20.6.2  Facebook的JavaScript  API  343
         20.6.3  Facebook的插件  344
         20.7  OpenSocial  345
         第6部分 服務器端 JavaScript  351
         第21章  服務器端JavaScript與Node.js  352
         21.1  服務器端JavaScript的動嚮  352
         21.2  CommonJS  352
         21.2.1  CommonJS的定義  352
         21.2.2  CommonJS的動嚮  353
         21.2.3  模塊功能  353
         21.3  Node.js  355
         21.3.1  Node.js概要  355
         21.3.2  node指令  359
         21.3.3  npm與包  359
         21.3.4  console模塊  360
         21.3.5  util模塊  361
         21.3.6  process對象  362
         21.3.7  全局對象  363
         21.3.8  Node.js程序設計概要  363
         21.3.9  事件API  365
         21.3.10  緩衝  369
         21.3.11  流  372
         第22章  Node.js程序設計實踐  374
         22.1  HTTP服務器處理  374
         22.1.1  HTTP服務器處理的基本流程  374
         22.1.2  請求處理  375
         22.1.3  響應處理  376
         22.1.4  POST請求處理  377
         22.2  HTTP客戶端處理  378
         22.3  HTTPS處理  379
         22.3.1  通過openssl指令發布自簽名證書的方法  379
         22.3.2  HTTPS服務器  379
         22.4  Socket.IO與WebSocket  380
         22.5  下層網絡程序設計  381
         22.5.1  下層網絡處理  381
         22.5.2  套接字的定義  382
         22.5.3  套接字程序設計的基本結構  382
         22.5.4  套接字程序設計的具體實例  384
         22.6  文件處理  385
         22.6.1  本節的範例代碼  385
         22.6.2  文件的異步處理  386
         22.6.3  文件的同步處理  386
         22.6.4  文件操作相關函數  387
         22.6.5  文件讀取  387
         22.6.6  文件寫入  388
         22.6.7  目錄操作  389
         22.6.8  對文件更改的監視  390
         22.6.9  文件路徑  390
         22.7  定時器  390
         22.8  Express  391
         22.8.1  URL路由  392
         22.8.2  請求處理  392
         22.8.3  響應處理  393
         22.8.4  scaffold創建功能  393
         22.8.5  MVC架構  393
         22.8.6  模闆語言Jade  394
         22.8.7  MongoDB(數據庫)  395
         22.8.8  Mongoose的實例  397
         22.8.9  使用瞭Express與Mongoose的Web應用程序  398
         後記  401
         索引  403
      · · · · · ·     (
收起)