作品介紹

JavaScript高級程序設(shè)計(jì)


作者:[美]NicholasC.Zakas     整理日期:2016-12-27 12:52:46


  本書是java script 超級暢銷書的最新版。ECMAScript 5 和HTML5 在標(biāo)準(zhǔn)之爭中雙雙勝出,使大量專有實(shí)現(xiàn)和客戶端擴(kuò)展正式進(jìn)入規(guī)范,同時(shí)也為java script 增添了很多適應(yīng)未來發(fā)展的新特性。本書這一版除增加5 章全新內(nèi)容外,其他章節(jié)也有較大幅度的增補(bǔ)和修訂,新內(nèi)容篇幅約占三分之一。全書從java script 語言實(shí)現(xiàn)的各個(gè)組成部分——語言核心、DOM、BOM、事件模型講起,深入淺出地探討了面向?qū)ο缶幊、Ajax 與Comet 服務(wù)器端通信,HTML5 表單、媒體、Canvas(包括WebGL)及Web Workers、地理定位、跨文檔傳遞消息、客戶端存儲(包括IndexedDB)等新API,還介紹了離線應(yīng)用和與維護(hù)、性能、部署相關(guān)的最佳開發(fā)實(shí)踐。本書附錄展望了未來的API 和ECMAScript Harmony 規(guī)范。
  本書適合有一定編程經(jīng)驗(yàn)的Web 應(yīng)用開發(fā)人員閱讀,也可作為高校及社會實(shí)用技術(shù)培訓(xùn)相關(guān)專業(yè)課程的教材。 作者簡介

作者簡介:
  Nicholas C. Zakas(尼古拉斯?澤卡斯)世界頂級Web技術(shù)專家,現(xiàn)為雅虎公司界面呈現(xiàn)架構(gòu)師,負(fù)責(zé)My Yahoo!和雅虎首頁等大訪問量站點(diǎn)的設(shè)計(jì)。尼古拉斯擁有豐富的Web開發(fā)和界面設(shè)計(jì)經(jīng)驗(yàn),曾經(jīng)參與許多世界級大公司的Web解決方案開發(fā)。他還是High Performance java script一書的作者,并與他人合作撰寫了Professional Ajax和Even Faster Web Sites。尼古拉斯擁有梅里馬克學(xué)院計(jì)算機(jī)科學(xué)學(xué)士學(xué)位和埃迪柯特學(xué)院的MBA學(xué)位。他的個(gè)人網(wǎng)站是www.nczonline.net,他的Twitter別名是@slicknet。

目錄:
  目  錄
  第1章 java script簡介  1
  1.1 java script簡史  1
  1.2 java script實(shí)現(xiàn)  2
  1.2.1 ECMAScript  3
  1.2.2 文檔對象模型(DOM)  5
  1.2.3 瀏覽器對象模型(BOM)  8
  1.3 java script版本  8
  1.4 小結(jié)  9
  第2章 在HTML中使用java script  10
  2.1 <script>元素  10
  2.1.1 標(biāo)簽的位置  12
  2.1.2 延遲腳本  13
  2.1.3 異步腳本  13
  2.1.4 在XHTML中的用法  14
  2.1.5 不推薦使用的語法  16
  2.2 嵌入代碼與外部文件  16
  2.3 文檔模式  16
  2.4 <noscript>元素  18
  2.5 小結(jié)  18
  第3章 基本概念  19
  3.1 語法  19
  3.1.1 區(qū)分大小寫  19
  3.1.2 標(biāo)識符  19
  3.1.3 注釋  20
  3.1.4 嚴(yán)格模式  20
  3.1.5 語句  20
  3.2 關(guān)鍵字和保留字  21
  3.3 變量  22
  3.4 數(shù)據(jù)類型  23
  3.4.1 typeof操作符  23
  3.4.2 Undefined類型  24
  3.4.3 Null類型  25
  3.4.4 Boolean類型  26
  3.4.5 Number類型  27
  3.4.6 String類型  32
  3.4.7 Object類型  35
  3.5 操作符  36
  3.5.1 一元操作符  36
  3.5.2 位操作符  39
  3.5.3 布爾操作符  44
  3.5.4 乘性操作符  47
  3.5.5 加性操作符  48
  3.5.6 關(guān)系操作符  50
  3.5.7 相等操作符  51
  3.5.8 條件操作符  53
  3.5.9 賦值操作符  53
  3.5.10 逗號操作符  54
  3.6 語句  54
  3.6.1 if語句  54
  3.6.2 do-while語句  55
  3.6.3 while語句  55
  3.6.4 for語句  56
  3.6.5 for-in語句  57
  3.6.6 label語句  58
  3.6.7 break和continue語句  58
  3.6.8 with語句  60
  3.6.9 switch語句  60
  3.7 函數(shù)  62
  3.7.1 理解參數(shù)  64
  3.7.2 沒有重載  66
  3.8 小結(jié)  67
  第4章 變量、作用域和內(nèi)存問題  68
  4.1 基本類型和引用類型的值  68
  4.1.1 動態(tài)的屬性  68
  4.1.2 復(fù)制變量值  69
  4.1.3 傳遞參數(shù)  70
  4.1.4 檢測類型  72
  4.2 執(zhí)行環(huán)境及作用域  73
  4.2.1 延長作用域鏈  75
  4.2.2 沒有塊級作用域  76
  4.3 垃圾收集  78
  4.3.1 標(biāo)記清除  78
  4.3.2 引用計(jì)數(shù)  79
  4.3.3 性能問題  80
  4.3.4 管理內(nèi)存  81
  4.4 小結(jié)  81
  第5章 引用類型  83
  5.1 Object類型  83
  5.2 Array類型  86
  5.2.1 檢測數(shù)組  88
  5.2.2 轉(zhuǎn)換方法  89
  5.2.3 棧方法  90
  5.2.4 隊(duì)列方法  91
  5.2.5 重排序方法  92
  5.2.6 操作方法  94
  5.2.7 位置方法  95
  5.2.8 迭代方法  96
  5.2.9 縮小方法  97
  5.3 Date類型  98
  5.3.1 繼承的方法  100
  5.3.2 日期格式化方法  101
  5.3.3 日期/時(shí)間組件方法  102
  5.4 RegExp類型  103
  5.4.1 RegExp實(shí)例屬性  105
  5.4.2 RegExp實(shí)例方法  106
  5.4.3 RegExp構(gòu)造函數(shù)屬性  107
  5.4.4 模式的局限性  109
  5.5 Function類型  110
  5.5.1 沒有重載(深入理解)  111
  5.5.2 函數(shù)聲明與函數(shù)表達(dá)式  111
  5.5.3 作為值的函數(shù)  112
  5.5.4 函數(shù)內(nèi)部屬性  113
  5.5.5 函數(shù)屬性和方法  116
  5.6 基本包裝類型  118
  5.6.1 Boolean類型  120
  5.6.2 Number類型  120
  5.6.3 String類型  122
  5.7 單體內(nèi)置對象  130
  5.7.1 Global對象  131
  5.7.2 Math對象  134
  5.8 小結(jié)  137
  第6章 面向?qū)ο蟮某绦蛟O(shè)計(jì)  138
  6.1 理解對象  138
  6.1.1 屬性類型  139
  6.1.2 定義多個(gè)屬性  142
  6.1.3 讀取屬性的特性  143
  6.2 創(chuàng)建對象  144
  6.2.1 工廠模式  144
  6.2.2 構(gòu)造函數(shù)模式  144
  6.2.3 原型模式  147
  6.2.4 組合使用構(gòu)造函數(shù)模式和原型模式  159
  6.2.5 動態(tài)原型模式  159
  6.2.6 寄生構(gòu)造函數(shù)模式  160
  6.2.7 穩(wěn)妥構(gòu)造函數(shù)模式  161
  6.3 繼承  162
  6.3.1 原型鏈  162
  6.3.2 借用構(gòu)造函數(shù)  167
  6.3.3 組合繼承  168
  6.3.4 原型式繼承  169
  6.3.5 寄生式繼承  171
  6.3.6 寄生組合式繼承  172
  6.4 小結(jié)  174
  第7章 函數(shù)表達(dá)式  175
  7.1 遞歸  177
  7.2 閉包  178
  7.2.1 閉包與變量  181
  7.2.2 關(guān)于this對象  182
  7.2.3 內(nèi)存泄漏  183
  7.3 模仿塊級作用域  184
  7.4 私有變量  186
  7.4.1 靜態(tài)私有變量  188
  7.4.2 模塊模式  189
  7.4.3 增強(qiáng)的模塊模式  191
  7.5 小結(jié)  192
  第8章 BOM  193
  8.1 window對象  193
  8.1.1 全局作用域  193
  8.1.2 窗口關(guān)系及框架  194
  8.1.3 窗口位置  197
  8.1.4 窗口大小  198
  8.1.5 導(dǎo)航和打開窗口  199
  8.1.6 間歇調(diào)用和超時(shí)調(diào)用  203
  8.1.7 系統(tǒng)對話框  205
  8.2 location對象  207
  8.2.1 查詢字符串參數(shù)  207
  8.2.2 位置操作  208
  8.3 navigator對象  210
  8.3.1 檢測插件  211
  8.3.2 注冊處理程序  213
  8.4 screen對象  214
  8.5 history對象  215
  8.6 小結(jié)  216
  第9章 客戶端檢測  217
  9.1 能力檢測  217
  9.1.1 更可靠的能力檢測  218
  9.1.2 能力檢測,不是瀏覽器檢測  220
  9.2 怪癖檢測  220
  9.3 用戶代理檢測  221
  9.3.1 用戶代理字符串的歷史  222
  9.3.2 用戶代理字符串檢測技術(shù)  228
  9.3.3 完整的代碼  242
  9.3.4 使用方法  245
  9.4 小結(jié)  246
  第10章 DOM  247
  10.1 節(jié)點(diǎn)層次  247
  10.1.1 Node類型  248
  10.1.2 Document類型  253
  10.1.3 Element類型  261
  10.1.4 Text類型  270
  10.1.5 Comment類型  273
  10.1.6 CDATASection類型  274
  10.1.7 DocumentType類型  274
  10.1.8 DocumentFragment類型  275
  10.1.9 Attr類型  276
  10.2 DOM操作技術(shù)  277
  10.2.1 動態(tài)腳本  277
  10.2.2 動態(tài)樣式  279
  10.2.3 操作表格  281
  10.2.4 使用NodeList  283
  10.3 小結(jié)  284
  第11章 DOM擴(kuò)展  286
  11.1 選擇符API  286
  11.1.1 querySelector()方法  286
  11.1.2 querySelectorAll()
  方法  287
  11.1.3 matchesSelector()
  方法  288
  11.2 元素遍歷  288
  11.3 HTML5  289
  11.3.1 與類相關(guān)的擴(kuò)充  289
  11.3.2 焦點(diǎn)管理  291
  11.3.3 HTMLDocument的變化  292
  11.3.4 字符集屬性  293
  11.3.5 自定義數(shù)據(jù)屬性  293
  11.3.6 插入標(biāo)記  294
  11.3.7 scrollIntoView()方法  298
  11.4 專有擴(kuò)展  298
  11.4.1 文檔模式  298
  11.4.2 children屬性  299
  11.4.3 contains()方法  300
  11.4.4 插入文本  301
  11.4.5 滾動  303
  11.5 小結(jié)  304
  第12章 DOM2和DOM3  305
  12.1 DOM變化  305
  12.1.1 針對XML命名空間的變化  306
  12.1.2 其他方面的變化  309
  12.2 樣式  312
  12.2.1 訪問元素的樣式  313
  12.2.2 操作樣式表  317
  12.2.3 元素大小  320
  12.3 遍歷  326
  12.3.1 NodeIterator  328
  12.3.2 TreeWalker  330
  12.4 范圍  332
  12.4.1 DOM中的范圍  332
  12.4.2 IE8及更早版本中的范圍  340
  12.5 小結(jié)  343
  第13章 事件  345
  13.1 事件流  345
  13.1.1 事件冒泡  346
  13.1.2 事件捕獲  346
  13.1.3 DOM事件流  347
  13.2 事件處理程序  348
  13.2.1 HTML事件處理程序  348
  13.2.2 DOM0級事件處理程序  350
  13.2.3 DOM2級事件處理程序  351
  13.2.4 IE事件處理程序  352
  13.2.5 跨瀏覽器的事件處理程序  353
  13.3 事件對象  355
  13.3.1 DOM中的事件對象  355
  13.3.2 IE中的事件對象  358
  13.3.3 跨瀏覽器的事件對象  360
  13.4 事件類型  362
  13.4.1 UI事件  362
  13.4.2 焦點(diǎn)事件  367
  13.4.3 鼠標(biāo)與滾輪事件  368
  13.4.4 鍵盤與文本事件  379
  13.4.5 復(fù)合事件  384
  13.4.6 變動事件  385
  13.4.7 HTML5事件  388
  13.4.8 設(shè)備事件  395
  13.4.9 觸摸與手勢事件  399
  13.5 內(nèi)存和性能  402
  13.5.1 事件委托  402
  13.5.2 移除事件處理程序  404
  13.6 模擬事件  405
  13.6.1 DOM中的事件模擬  405
  13.6.2 IE中的事件模擬  410
  13.7 小結(jié)  411
  第14章 表單腳本  412
  14.1 表單的基礎(chǔ)知識  412
  14.1.1 提交表單  413
  14.1.2 重置表單  414
  14.1.3 表單字段  414
  14.2 文本框腳本  419
  14.2.1 選擇文本  420
  14.2.2 過濾輸入  423
  14.2.3 自動切換焦點(diǎn)  426
  14.2.4 HTML5約束驗(yàn)證API  427
  14.3 選擇框腳本  431
  14.3.1 選擇選項(xiàng)  432
  14.3.2 添加選項(xiàng)  434
  14.3.3 移除選項(xiàng)  435
  14.3.4 移動和重排選項(xiàng)  435
  14.4 表單序列化  436
  14.5 富文本編輯  438
  14.5.1 使用contenteditable
  屬性  438
  14.5.2 操作富文本  439
  14.5.3 富文本選區(qū)  441
  14.5.4 表單與富文本  443
  14.6 小結(jié)  443
  第15章 使用Canvas繪圖  445
  15.1 基本用法  445
  15.2 2D上下文  446
  15.2.1 填充和描邊  446
  15.2.2 繪制矩形  447
  15.2.3 繪制路徑  449
  15.2.4 繪制文本  451
  15.2.5 變換  453
  15.2.6 繪制圖像  456
  15.2.7 陰影  457
  15.2.8 漸變  458
  15.2.9 模式  460
  15.2.10 使用圖像數(shù)據(jù)  460
  15.2.11 合成  462
  15.3 WebGL  463
  15.3.1 類型化數(shù)組  463
  15.3.2 WebGL上下文  468
  15.3.3 支持  478
  15.4 小結(jié)  478
  第16章 HTML5腳本編程  480
  16.1 跨文檔消息傳遞  480
  16.2 原生拖放  481
  16.2.1 拖放事件  482
  16.2.2 自定義放置目標(biāo)  482
  16.2.3 dataTransfer對象  483
  16.2.4 dropEffect與effectAllowed  484
  16.2.5 可拖動  485
  16.2.6 其他成員  485
  16.3 媒體元素  486
  16.3.1 屬性  487
  16.3.2 事件  488
  16.3.3 自定義媒體播放器  488
  16.3.4 檢測編解碼器的支持情況  489
  16.3.5 Audio類型  490
  16.4 歷史狀態(tài)管理  491
  16.5 小結(jié)  492
  第17章 錯(cuò)誤處理與調(diào)試  493
  17.1 瀏覽器報(bào)告的錯(cuò)誤  493
  17.1.1 IE  493
  17.1.2 Firefox  494
  17.1.3 Safari  496
  17.1.4 Opera  497
  17.1.5 Chrome  498
  17.2 錯(cuò)誤處理  499
  17.2.1 try-catch語句  500
  17.2.2 拋出錯(cuò)誤  503
  17.2.3 錯(cuò)誤(error)事件  505
  17.2.4 處理錯(cuò)誤的策略  506
  17.2.5 常見的錯(cuò)誤類型  507
  17.2.6 區(qū)分致命錯(cuò)誤和非致命
  錯(cuò)誤  510
  17.2.7 把錯(cuò)誤記錄到服務(wù)器  511
  17.3 調(diào)試技術(shù)  512
  17.3.1 將消息記錄到控制臺  512
  17.3.2 將消息記錄到當(dāng)前頁面  515
  17.3.3 拋出錯(cuò)誤  515
  17.4 常見的IE錯(cuò)誤  516
  17.4.1 操作終止  516
  17.4.2 無效字符  518
  17.4.3 未找到成員  518
  17.4.4 未知運(yùn)行時(shí)錯(cuò)誤  519
  17.4.5 語法錯(cuò)誤  519
  17.4.6 系統(tǒng)無法找到指定資源  519
  17.5 小結(jié)  520
  第18章 java script與XML  521
  18.1 瀏覽器對XML DOM的支持  521
  18.1.1 DOM2級核心  521
  18.1.2 DOMParser類型  522
  18.1.3 XMLSerializer類型  523
  18.1.4 IE8及之前版本中的XML  523
  18.1.5 跨瀏覽器處理XML  527
  18.2 瀏覽器對XPath的支持  529
  18.2.1 DOM3級XPath  529
  18.2.2 IE中的XPath  534
  18.2.3 跨瀏覽器使用XPath  535
  18.3 瀏覽器對XSLT的支持  537
  18.3.1 IE中的XSLT  537
  18.3.2 XSLTProcessor類型  541
  18.3.3 跨瀏覽器使用XSLT  543
  18.4 小結(jié)  544
  第19章 E4X  546
  19.1 E4X的類型  546
  19.1.1 XML類型  546
  19.1.2 XMLList類型  547
  19.1.3 Namespace類型  548
  19.1.4 QName類型  549
  19.2 一般用法  550
  19.2.1 訪問特性  551
  19.2.2 其他節(jié)點(diǎn)類型  552
  19.2.3 查詢  553
  19.2.4 構(gòu)建和操作XML  555
  19.2.5 解析和序列化  557
  19.2.6 命名空間  558
  19.3 其他變化  559
  19.4 全面啟用E4X  560
  19.5 小結(jié)  561
  第20章 JSON  562
  20.1 語法  562
  20.1.1 簡單值  562
  20.1.2 對象  563
  20.1.3 數(shù)組  564
  20.2 解析與序列化  565
  20.2.1 JSON對象  565
  20.2.2 序列化選項(xiàng)  566
  20.2.3 解析選項(xiàng)  569
  20.3 小結(jié)  570
  第21章 Ajax與Comet  571
  21.1 XMLHttpRequest對象  571
  21.1.1 XHR的用法  573
  21.1.2 HTTP頭部信息  575
  21.1.3 GET請求  576
  21.1.4 POST請求  577
  21.2 XMLHttpRequest 2級  578
  21.2.1 FormData  578
  21.2.2 超時(shí)設(shè)定  579
  21.2.3 overrideMimeType()
  方法  580
  21.3 進(jìn)度事件  580
  21.3.1 load事件  580
  21.3.2 progress事件  581
  21.4 跨源資源共享  582
  21.4.1 IE對CORS的實(shí)現(xiàn)  582
  21.4.2 其他瀏覽器對CORS的
  實(shí)現(xiàn)  584
  21.4.3 Preflighted Reqeusts  584
  21.4.4 帶憑據(jù)的請求  585
  21.4.5 跨瀏覽器的CORS  585
  21.5 其他跨域技術(shù)  586
  21.5.1 圖像Ping  586
  21.5.2 JSONP  587
  21.5.3 Comet  588
  21.5.4 服務(wù)器發(fā)送事件  590
  21.5.5 Web Sockets  591
  21.5.6 SSE與Web Sockets  593
  21.6 安全  593
  21.7 小結(jié)  594
  第22章 高級技巧  596
  22.1 高級函數(shù)  596
  22.1.1 安全的類型檢測  596
  22.1.2 作用域安全的構(gòu)造函數(shù)  597
  22.1.3 惰性載入函數(shù)  600
  22.1.4 函數(shù)綁定  602
  22.1.5 函數(shù)柯里化  604
  22.2 防篡改對象  606
  22.2.1 不可擴(kuò)展對象  606
  22.2.2 密封的對象  607
  22.2.3 凍結(jié)的對象  608
  22.3 高級定時(shí)器  609
  22.3.1 重復(fù)的定時(shí)器  610
  22.3.2 Yielding Processes  612
  22.3.3 函數(shù)節(jié)流  614
  22.4 自定義事件  616
  22.5 拖放  618
  22.5.1 修繕拖動功能  620
  22.5.2 添加自定義事件  622
  22.6 小結(jié)  624
  第23章 離線應(yīng)用與客戶端存儲  626
  23.1 離線檢測  626
  23.2 應(yīng)用緩存  627
  23.3 數(shù)據(jù)存儲  628
  23.3.1 Cookie  629
  23.3.2 IE用戶數(shù)據(jù)  637
  23.3.3 Web存儲機(jī)制  638
  23.3.4 IndexedDB  643
  23.4 小結(jié)  654
  第24章 最佳實(shí)踐  656
  24.1 可維護(hù)性  656
  24.1.1 什么是可維護(hù)的代碼  656
  24.1.2 代碼約定  657
  24.1.3 松散耦合  659
  24.1.4 編程實(shí)踐  662
  24.2 性能  666
  24.2.1 注意作用域  666
  24.2.2 選擇正確方法  667
  24.2.3 最小化語句數(shù)  672
  24.2.4 優(yōu)化DOM交互  673
  24.3 部署  676
  24.3.1 構(gòu)建過程  676
  24.3.2 驗(yàn)證  677
  24.3.3 壓縮  679
  24.4 小結(jié)  681
  第25章 新興的API  682
  25.1 requestAnimationFrame()  682
  25.1.1 早期動畫循環(huán)  682
  25.1.2 循環(huán)間隔的問題  683
  25.1.3 mozRequestAnimation-Frame  683
  25.1.4 webkitRequestAnima-tionFrame與msRequest-AnimationFrame  685
  25.2 Page Visibility API  686
  25.3 Geolocation API  687
  25.4 File API  689
  25.4.1 FileReader類型  690
  25.4.2 讀取部分內(nèi)容  692
  25.4.3 對象URL  693
  25.4.4 讀取拖放的文件  694
  25.4.5 使用XHR上傳文件  695
  25.5 Web計(jì)時(shí)  696
  25.6 Web Workers  697
  25.6.1 使用Worker  697
  25.6.2 Worker全局作用域  698
  25.6.3 包含其他腳本  699
  25.6.4 Web Workers的未來  700
  25.7 小結(jié)  700
  附錄A ECMAScript Harmony  701
  附錄B 嚴(yán)格模式  717
  附錄C java script庫  723
  附錄D java script工具  727





上一本:書寫與差異 下一本:三體Ⅱ

作家文集

下載說明
JavaScript高級程序設(shè)計(jì)的作者是[美]NicholasC.Zakas,全書語言優(yōu)美,行文流暢,內(nèi)容豐富生動引人入勝。為表示對作者的支持,建議在閱讀電子書的同時(shí),購買紙質(zhì)書。

更多好書