JavaScript高級程式設計(第2版)

JavaScript高級程式設計(第2版)

Professional JavaScript for Web Developers Second Edition,2010年人民郵電出版社出版,作者尼古拉斯·澤卡斯(Nicholas C.Zakas) (作者), 李松峰 (譯者), 曹力 (譯者),是一本幾乎涵蓋了所有需要理解的重要概念和最新的JavaScript套用成果的高級JAVA程式設計指導類圖書

內容簡介

《JavaScript高級程式設計(第2版)》在上一版基礎上進行了大幅度更新和修訂,融入了近幾年來JavaScript套用發展的最新成果,幾乎涵蓋了所有需要理解的重要概念和最新的JavaScript套用成果。從頗具深度的JavaScript語言基礎到作用域(鏈),從引用類型到面向對象編程,從極其靈活的匿名函式到閉包的內部機制,從瀏覽器對象模型(BOM)、文檔對象模型(DOM)到基於事件的Web腳本設計,從XML(E4X)到Ajax及JSON,從高級前端開發技術到前沿的客戶端存儲,從最佳編程實踐到即將成為現實的API,直至JavaScript未來的發展,全景式地展示了JavaScript高級程式設計的方方面面。

《JavaScript高級程式設計(第2版)》適合不同層次的JavaScript/Web開發人員閱讀參考,也可作為高校相關專業課程的教材。

編輯推薦

《JavaScript高級程式設計(第2版)》:

JavaScript經典教程

Amazon超級暢銷書

前端開發人員必備

JavaScrpt的套用在廣度和深度上日益擴大和加深,前端開發亟待掌握的JavaScrpt技能也越來越具有挑戰性。

這個新版本幾乎全部更新、重寫了上一版的內容,融入了作者近幾年來奮戰在前端開發一線的寶貴經驗,是學習和提高JavaScrpt技能的必讀經典。《JavaScript高級程式設計(第2版)》不僅全面深入地講述了,JavaScript的基本概念,闌釋了它特有的面向對象和繼承的機制.還詳盡討論了JavaScrpt實現的各個組成部分。在以大量篇幅全景式剖析ECMAScript和DOM的過程中,各個級別的DOM規範在作者筆下紛至沓來,諸如事件模擬、XML解析、XPath查詢等高級主題也講得分外清楚。此外,錯誤處理與調試、Ajax與JSON,乃至客戶端存儲、未來的API等章節也都條理清晰、異彩紛呈。

《JavaScript高級程式設計(第2版)》適合有一定編程經驗的前端開發人員閱讀,也可作為高校相關專業課程的教材。

一幅濃墨重彩的語言畫卷,一部推陳出新的技術名著

媒體推薦

“如果你像我一樣,想學習或者熟練掌握今天最熱門的Web開發技術,本書是一個絕佳的起點,適合在所有Ajax圖書之前閱讀。”

——J.Ambrose Little Microsoft MVP

“本書作者顯然非常了解讀者的需要,落筆切中要害,行文信息密集.單單對客戶端通信、Web服務、正則表達式、DOM、XML處理等現代JavaScrpt技術的詳細講解,就已經物超所值。”

——JavaScriptkit-com

作者簡介

作者:(美國)尼古拉斯·澤卡斯(Nicholas C.Zakas) 譯者:李松峰 曹力

尼古拉斯·澤卡斯(Nicholas C.Zakas),世界頂級Web技術專家,現為Yahoo!公司首席前端工程師尼古拉斯擁有豐富的Web開發和界面設計經驗.曾經參與許多世界級大公司的Web解決萬案開發。

目錄

第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

相關詞條

相關搜尋

熱門詞條

聯絡我們