第1章 JavaScript簡介 1
1.1 JavaScript簡史 1
1.2 JavaScript實現 2
1.2.1 ECMAScript 3
1.2.2 文檔對象模型(DOM) 5
1.2.3 瀏覽器對象模型(BOM) 7
1.3 JavaScript版本 8
1.4 小結 8
第2章 在HTML中使用JavaScript 9
2.1 script元素 9
2.1.1 標簽的位置 11
2.1.2 延遲腳本 11
2.1.3 在XHTML中的用法 12
2.1.4 不推薦使用的語法 13
2.1.5 嵌入代碼與外部文件 13
2.2 文檔模式 14
2.3 noscript元素 15
2.4 小結 16
第3章 基本概念 17
3.1 語法 17
3.1.1 區分大小寫 17
3.1.2 標識符 17
3.1.3 注釋 18
3.1.4 語句 18
3.2 關鍵字和保留字 18
3.3 變量 19
3.4 數據類型 20
3.4.1 typeof操作符 20
3.4.2 Undefined類型 21
3.4.3 Null類型 22
3.4.4 Boolean類型 22
3.4.5 Number類型 23
3.4.6 String類型 28
3.4.7 Object類型 30
3.5 操作符 31
3.5.1 一元操作符 31
3.5.2 位操作符 34
3.5.3 布爾操作符 38
3.5.4 乘性操作符 40
3.5.5 加性操作符 42
3.5.6 關係操作符 43
3.5.7 相等操作符 44
3.5.8 條件操作符 46
3.5.9 賦值操作符 46
3.5.10 逗號操作符 47
3.6 語句 47
3.6.1 if語句 47
3.6.2 do-while語句 48
3.6.3 while語句 48
3.6.4 for語句 48
3.6.5 for-in語句 49
3.6.6 label語句 50
3.6.7 break和continue語句 50
3.6.8 with語句 52
3.6.9 switch語句 52
3.7 函數 54
3.7.1 理解參數 55
3.7.2 沒有重載 57
3.8 小結 57
第4章 變量、作用域和內存問題 59
4.1 基本類型和引用類型的值 59
4.1.1 動態屬性 60
4.1.2 復製變量值 60
4.1.3 傳遞參數 62
4.1.4 檢測類型 63
4.2 執行環境及作用域 64
4.2.1 延長作用域鏈 66
4.2.2 沒有塊級作用域 66
4.3 垃圾收集 69
4.3.1 標記清除 69
4.3.2 引用計數 69
4.3.3 性能問題 70
4.3.4 管理內存 71
4.4 小結 72
第5章 引用類型 73
5.1 Object類型 73
5.2 Array類型 75
5.2.1 轉換方法 77
5.2.2 棧方法 78
5.2.3 隊列方法 79
5.2.4 重排序方法 80
5.2.5 操作方法 81
5.3 Date類型 83
5.3.1 繼承的方法 84
5.3.2 日期格式化方法 85
5.3.3 日期/時間組件方法 85
5.4 RegExp類型 86
5.4.1 RegExp實例屬性 88
5.4.2 RegExp實例方法 89
5.4.3 RegExp構造函數屬性 90
5.4.4 模式的局限性 92
5.5 Function類型 92
5.5.1 沒有重載(深入理解) 93
5.5.2 函數聲明與函數錶達式 94
5.5.3 作為值的函數 94
5.5.4 函數內部屬性 96
5.5.5 函數屬性和方法 97
5.6 基本包裝類型 99
5.6.1 Boolean類型 100
5.6.2 Number類型 101
5.6.3 String類型 102
5.7 內置對象 109
5.7.1 Global對象 109
5.7.2 Math對象 111
5.8 小結 114
第6章 麵嚮對象的程序設計 115
6.1 創建對象 115
6.1.1 工廠模式 115
6.1.2 構造函數模式 116
6.1.3 原型模式 119
6.1.4 組閤使用構造函數模式和原型模式 128
6.1.5 動態原型模式 129
6.1.6 寄生構造函數模式 129
6.1.7 穩妥構造函數模式 130
6.2 繼承 131
6.2.1 原型鏈 131
6.2.2 藉用構造函數 136
6.2.3 組閤繼承 137
6.2.4 原型式繼承 138
6.2.5 寄生式繼承 139
6.2.6 寄生組閤式繼承 139
6.3 小結 142
第7章 匿名函數 143
7.1 遞歸 144
7.2 閉包 144
7.2.1 閉包與變量 147
7.2.2 關於this對象 148
7.2.3 內存泄漏 149
7.3 模仿塊級作用域 150
7.4 私有變量 152
7.4.1 靜態私有變量 153
7.4.2 模塊模式 154
7.4.3 增強的模塊模式 156
7.5 小結 157
第8章 BOM 158
8.1 window對象 158
8.1.1 全局作用域 158
8.1.2 窗口關係及框架 159
8.1.3 窗口位置 161
8.1.4 窗口大小 162
8.1.5 導航和打開窗口 163
8.1.6 間歇調用和超時調用 166
8.1.7 係統對話框 168
8.2 location對象 169
8.2.1 查詢字符串參數 170
8.2.2 位置操作 171
8.3 navigator對象 172
8.3.1 檢測插件 173
8.3.2 注冊處理程序 175
8.4 screen對象 176
8.5 history對象 177
8.6 小結 178
第9章 客戶端檢測 179
9.1 能力檢測 179
9.2 怪癖檢測 181
9.3 用戶代理檢測 181
9.3.1 用戶代理字符串的曆史 182
9.3.2 用戶代理字符串檢測技術 187
9.3.3 完整的代碼 199
9.3.4 使用方法 202
9.4 小結 202
第10章 DOM 204
10.1 節點層次 204
10.1.1 Node類型 205
10.1.2 Document類型 210
10.1.3 Element類型 217
10.1.4 Text類型 225
10.1.5 Comment類型 228
10.1.6 CDATASection類型 228
10.1.7 DocumentType類型 229
10.1.8 DocumentFragment類型 229
10.1.9 Attr類型 230
10.2 DOM擴展 231
10.2.1 呈現模式 231
10.2.2 滾動 232
10.2.3 children屬性 232
10.2.4 contains()方法 233
10.2.5 操作內容 234
10.3 DOM操作技術 239
10.3.1 動態腳本 239
10.3.2 動態樣式 241
10.3.3 操作錶格 242
10.3.4 使用NodeList 245
10.4 小結 245
第11章 DOM2和DOM3 247
11.1 DOM變化 247
11.1.1 針對XML命名空間的變化 248
11.1.2 其他方麵的變化 250
11.2 樣式 254
11.2.1 訪問元素的樣式 254
11.2.2 操作樣式錶 258
11.2.3 元素大小 261
11.3 遍曆 267
11.3.1 NodeIterator 268
11.3.2 TreeWalker 271
11.4 範圍 272
11.4.1 DOM中的範圍 272
11.4.2 IE中的範圍 279
11.5 小結 282
第12章 事件 283
12.1 事件流 283
12.1.1 事件冒泡 283
12.1.2 事件捕獲 284
12.1.3 DOM事件流 285
12.2 事件處理程序(或事件偵聽器) 285
12.2.1 HTML事件處理程序 286
12.2.2 DOM0級事件處理程序 286
12.2.3 DOM2級事件處理程序 287
12.2.4 IE事件處理程序 288
12.2.5 跨瀏覽器的事件處理程序 289
12.3 事件對象 290
12.3.1 DOM中的事件對象 291
12.3.2 IE中的事件對象 293
12.3.3 跨瀏覽器的事件對象 295
12.4 事件類型 296
12.4.1 UI事件 297
12.4.2 鼠標事件 297
12.4.3 鍵盤事件 303
12.4.4 HTML事件 307
12.4.5 變動事件 312
12.4.6 專有事件 316
12.4.7 移動Safari支持的事件 325
12.5 內存和性能 328
12.5.1 事件委托 328
12.5.2 移除事件處理程序 330
12.6 模擬事件 331
12.6.1 DOM中的事件模擬 331
12.6.2 IE中的事件模擬 335
12.7 小結 336
第13章 錶單腳本 337
13.1 錶單 337
13.1.1 提交錶單 338
13.1.2 重置錶單 338
13.1.3 錶單字段 339
13.2 文本框腳本 343
13.2.1 選擇文本 344
13.2.2 過濾輸入 347
13.2.3 自動切換焦點 350
13.3 選擇框腳本 351
13.3.1 選擇選項 352
13.3.2 添加選項 354
13.3.3 移除選項 354
13.3.4 移動和重排選項 355
13.4 錶單序列化 355
13.5 富文本編輯 357
13.5.1 操作富文本 358
13.5.2 富文本選區 359
13.5.3 錶單與富文本 361
13.6 小結 361
第14章 錯誤處理與調試 363
14.1 瀏覽器錯誤報告 363
14.1.1 Internet Explorer 363
14.1.2 Firefox 364
14.1.3 Safari 366
14.1.4 Opera 367
14.1.5 Chrome 368
14.2 錯誤處理 369
14.2.1 try-catch語句 369
14.2.2 拋齣錯誤 372
14.2.3 錯誤(error)事件 374
14.3 錯誤處理策略 375
14.3.1 常見的錯誤類型 375
14.3.2 區分緻命錯誤和非緻命錯誤 379
14.3.3 把錯誤記錄到服務器 380
14.4 調試技術 381
14.4.1 將消息記錄到控製颱 381
14.4.2 將消息記錄到當前頁麵 383
14.4.3 拋齣錯誤 384
14.5 常用的IE錯誤 384
14.5.1 操作終止 384
14.5.2 無效字符 386
14.5.3 未找到成員 386
14.5.4 未知運行時錯誤 387
14.5.5 語法錯誤 387
14.5.6 係統無法找到指定資源 387
14.6 調試工具 388
14.6.1 IE中的調試器 388
14.6.2 Firebug 392
14.6.3 Drosera 396
14.6.4 Opera中的JavaScript調試器 398
14.6.5 其他調試工具 401
14.7 小結 401
第15章 JavaScript與XML 402
15.1 瀏覽器對XML DOM的支持 402
15.1.1 DOM2級核心 402
15.1.2 DOMParser類型 403
15.1.3 XMLSerializer類型 404
15.1.4 DOM3級加載和保存 404
15.1.5 IE對XML的支持 409
15.1.6 跨瀏覽器處理XML 412
15.2 瀏覽器對XPath的支持 414
15.2.1 DOM3級XPath 414
15.2.2 IE中的XPath 418
15.2.3 跨瀏覽器使用XPath 419
15.3 瀏覽器對XSLT的支持 421
15.3.1 IE中的XSLT 421
15.3.2 XSLTProcessor類型 425
15.3.3 跨瀏覽器使用XSLT 427
15.4 小結 428
第16章 E4X 429
16.1 E4X的類型 429
16.1.1 XML類型 429
16.1.2 XMLList類型 430
16.1.3 命名空間類型 431
16.1.4 QName類型 432
16.2 一般用法 432
16.2.1 訪問特性 433
16.2.2 其他節點類型 434
16.2.3 查詢 436
16.2.4 構建和操作XML 437
16.2.5 解析和序列化 439
16.2.6 命名空間 439
16.3 其他變化 441
16.4 全麵啓用E4X 442
16.5 小結 442
第17章 Ajax與JSON 443
17.1 XHR對象 443
17.1.1 XHR的用法 445
17.1.2 HTTP頭部信息 446
17.1.3 GET請求 448
17.1.4 POST請求 448
17.1.5 瀏覽器差異 449
17.1.6 安全 451
17.2 跨域請求 452
17.2.1 XDomainRequest對象 452
17.2.2 跨域XHR 454
17.3 JSON 454
17.3.1 在Ajax中使用JSON 456
17.3.2 安全 458
17.4 小結 459
第18章 高級技巧 460
18.1 高級函數 460
18.1.1 作用域安全的構造函數 460
18.1.2 惰性載入函數 462
18.1.3 函數綁定 464
18.1.4 函數柯裏化 465
18.2 高級定時器 467
18.2.1 重復的定時器 469
18.2.2 Yielding Processes 470
18.2.3 函數節流 472
18.3 自定義事件 474
18.4 拖放 476
18.4.1 修繕拖動功能 478
18.4.2 添加自定義事件 480
18.5 小結 482
第19章 客戶端存儲 483
19.1 cookie 483
19.1.1 限製 483
19.1.2 cookie的成分 484
19.1.3 JavaScript中的cookie 485
19.1.4 子cookie 487
19.1.5 關於cookie的思考 491
19.2 IE用戶數據 491
19.3 DOM存儲機製 492
19.3.1 存儲類型 492
19.3.2 sessionStorage對象 493
19.3.3 globalStorage對象 494
19.3.4 localStorage對象 495
19.3.5 StorageItem類型 496
19.3.6 storage事件 496
19.3.7 限製 496
19.4 總結 497
第20章 最佳實踐 498
20.1 可維護性 498
20.1.1 什麼是可維護的代碼 498
20.1.2 代碼約定 498
20.2 鬆散耦閤 501
20.3 性能 507
20.3.1 注意作用域 508
20.3.2 選擇正確方法 509
20.3.3 最小化語句數 513
20.3.4 優化DOM交互 515
20.4 部署 517
20.4.1 構建過程 517
20.4.2 驗證 518
20.4.3 壓縮 520
20.5 小結 522
第21章 未來的API 523
21.1 選擇器API 523
21.1.1 querySelector()方法 523
21.1.2 querySelectorAll()方法 524
21.1.3 現今和未來的支持情況 525
21.2 HTML5 525
21.2.1 字符集屬性 525
21.2.2 類相關的增加 526
21.2.3 自定義數據特性 528
21.2.4 跨文檔消息傳遞 528
21.2.5 媒體元素 529
21.2.6 canvas元素 532
21.2.7 離綫支持 540
21.2.8 曆史的改變 541
21.2.9 數據庫存儲 541
21.2.10 拖放操作 543
21.2.11 WebSocket類型 546
21.2.12 HTML5的未來 547
21.3 小結 547
第22章 JavaScript的未來 548
22.1 ECMAScript4/JavaScript2 548
22.1.1 JavaScript1.5 548
22.1.2 JavaScript1.6 550
22.1.3 JavaScript1.7 552
22.1.4 JavaScript1.8 557
22.1.5 JavaScript1.9 558
22.1.6 ECMAScript4提案 559
22.1.7 變量類型 559
22.1.8 函數 561
22.1.9 類型定義 563
22.1.10 類和接口 565
22.1.11 接口 569
22.1.12 繼承 569
22.1.13 命名空間 571
22.1.14 包 572
22.1.15 語言上的其他變更 572
22.1.16 ECMAScript4的未來 577
22.2 ECMAScript3.1 577
22.2.1 對對象內部實現的變更 578
22.2.2 靜態對象方法 578
22.2.3 本地的JSON支持 585
22.2.4 Decimal 586
22.2.5 用法子集 589
22.2.6 ECMAScript3.1的未來 590
22.3 小結 590
附錄A JavaScript庫 591
附錄B JavaScript工具 595
· · · · · · (
收起)