JavaScript高級(jí)程序設(shè)計(jì)
JavaScript最新經(jīng)典教程 * Amazon超級(jí)暢銷書(shū) * AJAX程序員必備
隨著國(guó)內(nèi)的計(jì)算機(jī)圖書(shū)市場(chǎng)越來(lái)越細(xì)化,各類引進(jìn)版和原創(chuàng)圖書(shū)在各自領(lǐng)域內(nèi)如雨后春筍般展露頭角,各類“經(jīng)典”和“圣經(jīng)”橫空出世。但是有一個(gè)領(lǐng)域內(nèi)卻一直遺留了大片空白,就是JavaScript類圖書(shū)。除了O'Reilly的《JAVASCRIPT權(quán)威指南》之外,國(guó)內(nèi)一直沒(méi)有出現(xiàn)過(guò)特別優(yōu)秀的同類圖書(shū)。就在這時(shí),Wrox的《Professional JavaScript for Web Developers》走進(jìn)了我們的視野,中文名是《JAVASCRIPT高級(jí)程序設(shè)計(jì)》
JavaScript是目前Web客戶端開(kāi)發(fā)的主要編程語(yǔ)言,也是Ajax的核心技術(shù)之一。本書(shū)從最早期Netscape瀏覽器中的JavaScript 開(kāi)始講起,直到當(dāng)前它對(duì)XML和Web服務(wù)的具體支持...
JavaScript最新經(jīng)典教程 * Amazon超級(jí)暢銷書(shū) * AJAX程序員必備
隨著國(guó)內(nèi)的計(jì)算機(jī)圖書(shū)市場(chǎng)越來(lái)越細(xì)化,各類引進(jìn)版和原創(chuàng)圖書(shū)在各自領(lǐng)域內(nèi)如雨后春筍般展露頭角,各類“經(jīng)典”和“圣經(jīng)”橫空出世。但是有一個(gè)領(lǐng)域內(nèi)卻一直遺留了大片空白,就是JavaScript類圖書(shū)。除了O'Reilly的《JAVASCRIPT權(quán)威指南》之外,國(guó)內(nèi)一直沒(méi)有出現(xiàn)過(guò)特別優(yōu)秀的同類圖書(shū)。就在這時(shí),Wrox的《Professional JavaScript for Web Developers》走進(jìn)了我們的視野,中文名是《JAVASCRIPT高級(jí)程序設(shè)計(jì)》
JavaScript是目前Web客戶端開(kāi)發(fā)的主要編程語(yǔ)言,也是Ajax的核心技術(shù)之一。本書(shū)從最早期Netscape瀏覽器中的JavaScript 開(kāi)始講起,直到當(dāng)前它對(duì)XML和Web服務(wù)的具體支持,內(nèi)容主要涉及JavaScript的語(yǔ)言特點(diǎn)、JavaScript與瀏覽器的交互、更高級(jí)的 JavaScript技巧,以及與在Web應(yīng)用程序中部署JavaScript解決方案有關(guān)的問(wèn)題,如錯(cuò)誤處理、調(diào)試、安全性、優(yōu)化/混淆化、XML和 Web服務(wù),最后介紹應(yīng)用所有這些知識(shí)來(lái)創(chuàng)建動(dòng)態(tài)用戶界面。
本書(shū)適合有一定編程經(jīng)驗(yàn)的開(kāi)發(fā)人員閱讀,也可作為高校相關(guān)專業(yè)課程的教材。
新增DOM概念,如何實(shí)現(xiàn)正則表達(dá)式進(jìn)行數(shù)據(jù)驗(yàn)證和字符串操作,把JavaScript聯(lián)系到Web用戶界面的事件處理方法; 數(shù)據(jù)驗(yàn)證、表排序和錯(cuò)誤處理的方法等
目錄
第1章 JavaScript是什么 1
1.1 歷史簡(jiǎn)述 1
1.2 JavaScript實(shí)現(xiàn) 2
1.2.1 ECMAScript 3
1.2.2 DOM 5
1.2.3 BOM 8
1.3 小結(jié) 8
第2章 ECMAScript基礎(chǔ) 9
2.1 語(yǔ)法 9
2.2 變量 10
2.3 關(guān)鍵字 12
2.4 保留字 12
2.5 原始值和引用值 13
2.6 原始類型 13
2.6.1 typeof運(yùn)算符 14
2.6.2 Undefined類型 14
2.6.3 Null類型 15
2.6.4 Boolean類型 15
2.6.5 Number類型 15
2.6.6 String類型 17
2.7 轉(zhuǎn)換 18
2.7.1 轉(zhuǎn)換成字符串 18
2.7.2 轉(zhuǎn)換成數(shù)字 19
2.7.3 強(qiáng)制類型轉(zhuǎn)換 20
2.8 引用類型 22
2.8.1 Object類 22
2.8.2 Boolean類 23
2.8.3 Number類 23
2.8.4 String類 24
2.8.5 instanceof運(yùn)算符 28
2.9 運(yùn)算符 28
2.9.1 一元運(yùn)算符 28
2.9.2 位運(yùn)算符 32
2.9.3 Boolean運(yùn)算符 37
2.9.4 乘性運(yùn)算符 40
2.9.5 加性運(yùn)算符 41
2.9.6 關(guān)系運(yùn)算符 42
2.9.7 等性運(yùn)算符 43
2.9.8 條件運(yùn)算符 45
2.9.9 賦值運(yùn)算符 45
2.9.10 逗號(hào)運(yùn)算符 46
2.10 語(yǔ)句 46
2.10.1 if語(yǔ)句 46
2.10.2 迭代語(yǔ)句 47
2.10.3 有標(biāo)簽的語(yǔ)句 48
2.10.4 break語(yǔ)句和continue語(yǔ)句 48
2.10.5 with語(yǔ)句 50
2.10.6 switch語(yǔ)句 50
2.11 函數(shù) 51
2.11.1 無(wú)重載 53
2.11.2 arguments對(duì)象 53
2.11.3 Function類 54
2.11.4 閉包 56
2.12 小結(jié) 57
第3章 對(duì)象基礎(chǔ) 58
3.1 面向?qū)ο笮g(shù)語(yǔ) 58
3.1.1 面向?qū)ο笳Z(yǔ)言的要求 58
3.1.2 對(duì)象的構(gòu)成 59
3.2 對(duì)象應(yīng)用 59
3.2.1 聲明和實(shí)例化 59
3.2.2 對(duì)象引用 59
3.2.3 對(duì)象廢除 59
3.2.4 早綁定和晚綁定 60
3.3 對(duì)象的類型 60
3.3.1 本地對(duì)象 60
3.3.2 內(nèi)置對(duì)象 70
3.3.3 宿主對(duì)象 75
3.4 作用域 75
3.4.1 公用、受保護(hù)和私有作用域 75
3.4.2 靜態(tài)作用域并非靜態(tài)的 76
3.4.3 關(guān)鍵字this 76
3.5 定義類或?qū)ο?78
3.5.1 工廠方式 78
3.5.2 構(gòu)造函數(shù)方式 80
3.5.3 原型方式 80
3.5.4 混合的構(gòu)造函數(shù)/原型方式 81
3.5.5 動(dòng)態(tài)原型方法 82
3.5.6 混合工廠方式 83
3.5.7 采用哪種方式 84
3.5.8 實(shí)例 84
3.6 修改對(duì)象 86
3.6.1 創(chuàng)建新方法 86
3.6.2 重定義已有方法 87
3.6.3 極晚綁定 88
3.7 小結(jié) 88
第4章 繼承 89
4.1 繼承機(jī)制實(shí)例 89
4.2 繼承機(jī)制的實(shí)現(xiàn) 90
4.2.1 繼承的方式 90
4.2.2 一個(gè)更實(shí)際的例子 96
4.3 其他繼承方式 100
4.3.1 zInherit 100
4.3.2 xbObjects 104
4.4 小結(jié) 108
第5章 瀏覽器中的JavaScript 109
5.1 HTML中的JavaScript 109
5.1.1 〈script/〉標(biāo)簽 109
5.1.2 外部文件格式 110
5.1.3 內(nèi)嵌代碼和外部文件 111
5.1.4 標(biāo)簽放置 111
5.1.5 隱藏還是不隱藏 113
5.1.6 〈noscript/〉標(biāo)簽 113
5.1.7 XHTML中的改變 114
5.2 SVG中的JavaScript 116
5.2.1 SVG基礎(chǔ) 116
5.2.2 SVG中的〈script/〉標(biāo)簽 117
5.2.3 SVG中的標(biāo)簽放置 118
5.3 BOM 119
5.3.1 window對(duì)象 119
5.3.2 document對(duì)象 130
5.3.3 location對(duì)象 133
5.3.4 navigator對(duì)象 135
5.3.5 screen對(duì)象 136
5.4 小結(jié) 137
第6章 DOM基礎(chǔ) 138
6.1 什么是DOM? 138
6.1.1 XML簡(jiǎn)介 138
6.1.2 針對(duì)XML的API 141
6.1.3 節(jié)點(diǎn)的層次 141
6.1.4 特定語(yǔ)言的DOM 144
6.2 對(duì)DOM的支持 145
6.3 使用DOM 145
6.3.1 訪問(wèn)相關(guān)的節(jié)點(diǎn) 145
6.3.2 檢測(cè)節(jié)點(diǎn)類型 146
6.3.3 處理特性 147
6.3.4 訪問(wèn)指定節(jié)點(diǎn) 148
6.3.5 創(chuàng)建和操作節(jié)點(diǎn) 150
6.4 HTML DOM特征功能 155
6.4.1 讓特性像屬性一樣 155
6.4.2 table方法 156
6.5 遍歷DOM 158
6.5.1 NodeIterator 158
6.5.2 TreeWalker 163
6.6 測(cè)試與DOM標(biāo)準(zhǔn)的一致性 165
6.7 DOM Level 3 166
6.8 小結(jié) 166
第7章 正則表達(dá)式 167
7.1 正則表達(dá)式支持 167
7.1.1 使用RegExp對(duì)象 168
7.1.2 擴(kuò)展的字符串方法 169
7.2 簡(jiǎn)單模式 170
7.2.1 元字符 170
7.2.2 使用特殊字符 170
7.2.3 字符類 172
7.2.4 量詞 174
7.3 復(fù)雜模式 177
7.3.1 分組 177
7.3.2 反向引用 178
7.3.3 候選 179
7.3.4 非捕獲性分組 180
7.3.5 前瞻 181
7.3.6 邊界 182
7.3.7 多行模式 183
7.4 理解RegExp對(duì)象 184
7.4.1 實(shí)例屬性 184
7.4.2 靜態(tài)屬性 185
7.5 常用模式 186
7.5.1 驗(yàn)證日期 187
7.5.2 驗(yàn)證信用卡號(hào) 188
7.5.3 驗(yàn)證電子郵件地址 192
7.6 小結(jié) 193
第8章 檢測(cè)瀏覽器和操作系統(tǒng) 194
8.1 navigator對(duì)象 194
8.2 檢測(cè)瀏覽器的方式 194
8.2.1 對(duì)象/特征檢測(cè)法 194
8.2.2 user-agent字符串檢測(cè)法 195
8.3 user-agent字符串簡(jiǎn)史 196
8.3.1 Netscape Navigator 3.0與 IE3.0 196
8.3.2 Netscape Communicator 4.0與IE 4.0 197
8.3.3 IE 5.0及更高版本 198
8.3.4 Mozilla 198
8.3.5 Opera 200
8.3.6 Safari 201
8.3.7 結(jié)語(yǔ) 201
8.4 瀏覽器檢測(cè)腳本 201
8.4.1 方法學(xué) 202
8.4.2 第一步 202
8.4.3 檢測(cè)Opera 204
8.4.4 檢測(cè)Konqueror/Safari 206
8.4.5 檢測(cè)IE 208
8.4.6 檢測(cè)Mozilla 209
8.4.7 檢測(cè)Netscape Communicator 4.x 210
8.5 平臺(tái)/操作系統(tǒng)檢測(cè)腳本 211
8.5.1 方法學(xué) 211
8.5.2 第一步 212
8.5.3 檢測(cè)Windows操作系統(tǒng) 212
8.5.4 檢測(cè)Macintosh操作系統(tǒng) 214
8.5.5 檢測(cè)Unix操作系統(tǒng) 214
8.6 全部腳本 215
8.7 例子:登錄頁(yè)面 219
8.8 小結(jié) 224
第9章 事件 225
9.1 今天的事件 225
9.2 事件流 226
9.2.1 冒泡型事件 226
9.2.2 捕獲型事件 227
9.2.3 DOM事件流 228
9.3 事件處理函數(shù)/監(jiān)聽(tīng)函數(shù) 229
9.3.1 IE 230
9.3.2 DOM 231
9.4 事件對(duì)象 232
9.4.1 定位 233
9.4.2 屬性/方法 233
9.4.3 相似性 235
9.4.4 區(qū)別 238
9.5 事件的類型 240
9.5.1 鼠標(biāo)事件 240
9.5.2 鍵盤事件 244
9.5.3 HTML事件 246
9.5.4 變化事件 251
9.6 跨平臺(tái)的事件 252
9.6.1 EventUtil對(duì)象 252
9.6.2 添加/刪除事件處理函數(shù) 252
9.6.3 格式化event對(duì)象 254
9.6.4 獲取事件對(duì)象 258
9.6.5 示例 259
9.7 小結(jié) 260
第10章 高級(jí)DOM技術(shù) 261
10.1 樣式編程 261
10.1.1 DOM樣式的方法 263
10.1.2 自定義鼠標(biāo)提示 264
10.1.3 可折疊區(qū)域 265
10.1.4 訪問(wèn)樣式表 266
10.1.5 最終樣式 270
10.2 innerText和innerHTML 271
10.3 outerText和outerHTML 273
10.4 范圍 274
10.4.1 DOM中的范圍 274
10.4.2 IE中的范圍 284
10.4.3 范圍在實(shí)際中的應(yīng)用 288
10.5 小結(jié) 288
第11章 表單和數(shù)據(jù)完整性 289
11.1 表單基礎(chǔ) 289
11.2 對(duì)〈form/〉元素進(jìn)行腳本編寫(xiě) 291
11.2.1 獲取表單的引用 291
11.2.2 訪問(wèn)表單字段 291
11.2.3 表單字段的共性 292
11.2.4 聚焦于第一個(gè)字段 292
11.2.5 提交表單 293
11.2.6 僅提交一次 294
11.2.7 重置表單 295
11.3 文本框 295
11.3.1 獲取/更改文本框的值 296
11.3.2 選擇文本 297
11.3.3 文本框事件 298
11.3.4 自動(dòng)選擇文本 298
11.3.5 自動(dòng)切換到下一個(gè) 299
11.3.6 限制textarea的字符數(shù) 300
11.3.7 允許/阻止文本框中的字符 301
11.3.8 使用上下按鍵操作數(shù)字文本 306
11.4 列表框和組合框 308
11.4.1 訪問(wèn)選項(xiàng) 309
11.4.2 獲取/更改選中項(xiàng) 309
11.4.3 添加選項(xiàng) 310
11.4.4 刪除選項(xiàng) 311
11.4.5 移動(dòng)選項(xiàng) 312
11.4.6 重新排序選項(xiàng) 313
11.5 創(chuàng)建自動(dòng)提示的文本框 313
11.5.1 匹配 314
11.5.2 內(nèi)部機(jī)制 314
11.6 小結(jié) 316
第12章 表格排序 317
12.1 起點(diǎn)——數(shù)組 317
12.2 對(duì)單列的表格排序 319
12.2.1 比較函數(shù) 320
12.2.2 sortTable()函數(shù) 320
12.3 對(duì)多列表格進(jìn)行排序 323
12.3.1 比較函數(shù)生成器 323
12.3.2 修改sortTable()方法 324
12.3.3 逆序排列 325
12.3.4 對(duì)不同的數(shù)據(jù)類型進(jìn)行排序 327
12.3.5 高級(jí)排序 330
12.4 小結(jié) 334
第13章 拖放 335
13.1 系統(tǒng)拖放 335
13.1.1 拖放事件 336
13.1.2 數(shù)據(jù)傳輸對(duì)象dataTransfer 341
13.1.3 dragDrop()方法 345
13.1.4 優(yōu)點(diǎn)及缺點(diǎn) 346
13.2 模擬拖放 346
13.2.1 代碼 347
13.2.2 創(chuàng)建放置目標(biāo) 349
13.2.3 優(yōu)點(diǎn)及缺點(diǎn) 352
13.3 zDragDrop 352
13.3.1 創(chuàng)建可拖動(dòng)元素 352
13.3.2 創(chuàng)建放置目標(biāo) 353
13.3.3 事件 353
13.3.4 例子 354
13.4 小結(jié) 355
第14章 錯(cuò)誤處理 356
14.1 錯(cuò)誤處理的重要性 356
14.2 錯(cuò)誤和異常 357
14.3 錯(cuò)誤報(bào)告 358
14.3.1 IE(Windows) 358
14.3.2 IE(MacOS) 359
14.3.3 Mozilla(所有平臺(tái)) 359
14.3.4 Safari(MacOS) 360
14.3.5 Opera 7(所有平臺(tái)) 361
14.4 處理錯(cuò)誤 362
14.4.1 onerror事件處理函數(shù) 362
14.4.2 try...catch語(yǔ)句 365
14.5 調(diào)試技巧 370
14.5.1 使用警告框 370
14.5.2 使用Java控制臺(tái) 371
14.5.3 將消息寫(xiě)入JavaScript控制臺(tái) (僅限Opera 7+) 372
14.5.4 拋出自定義錯(cuò)誤 372
14.5.5 JavaScript校驗(yàn)器 373
14.6 調(diào)試器 374
14.6.1 Microsoft Script Debugger 374
14.6.2 Venkman 376
14.7 小結(jié) 383
第15章 JavaScript中的XML 384
15.1 瀏覽器中的XML DOM支持 384
15.1.1 IE中的XML DOM支持 384
15.1.2 Mozilla中XML DOM支持 388
15.1.3 通用接口 393
15.2 瀏覽器中的XPath支持 403
15.2.1 XPath簡(jiǎn)介 403
15.2.2 IE中的XPath支持 404
15.2.3 Mozilla中的XPath支持 404
15.3 瀏覽器中的XSLT支持 408
15.3.1 IE中的XSLT支持 410
15.3.2 Mozilla中XSLT支持 413
15.4 小結(jié) 415
第16章 客戶端與服務(wù)器端的通信 416
16.1 cookie 416
16.1.1 cookie的成分 416
16.1.2 其他安全限制 417
16.1.3 JavaScript中的cookie 417
16.1.4 服務(wù)器端的cookie 419
16.1.5 在客戶端與服務(wù)器端之間傳遞cookie 422
16.2 隱藏框架 423
16.3 HTTP請(qǐng)求 426
16.3.1 使用HTTP首部 428
16.3.2 實(shí)現(xiàn)的復(fù)制品 429
16.3.3 進(jìn)行GET請(qǐng)求 430
16.3.4 進(jìn)行POST請(qǐng)求 430
16.4 LiveConnect請(qǐng)求 431
16.4.1 進(jìn)行GET請(qǐng)求 431
16.4.2 進(jìn)行POST請(qǐng)求 433
16.5 智能HTTP請(qǐng)求 435
16.5.1 get()方法 435
16.5.2 post()方法 438
16.6 實(shí)際使用 439
16.7 小結(jié) 439
第17章 Web服務(wù) 440
17.1 Web服務(wù)快速入門 440
17.1.1 Web服務(wù)是什么? 440
17.1.2 WSDL 441
17.2 IE中的Web服務(wù) 443
17.2.1 使用WebService組件 444
17.2.2 WebService組件例子 445
17.3 Mozilla中的Web服務(wù) 447
17.3.1 加強(qiáng)的特權(quán) 447
17.3.2 使用SOAP方法 448
17.3.3 使用WSDL代理 451
17.4 跨瀏覽器的方案 454
17.4.1 WebService對(duì)象 454
17.4.2 Temperature 服務(wù) 456
17.4.3 使用TemperatureService對(duì)象 458
17.5 小結(jié) 458
第18章 與插件進(jìn)行交互 459
18.1 為何使用插件 459
18.2 流行的插件 460
18.3 MIME類型 460
18.4 嵌入插件 461
18.4.1 加入?yún)?shù) 461
18.4.2 Netscape 4.x 462
18.5 檢測(cè)插件 462
18.5.1 檢測(cè)Netscape式插件 463
18.5.2 檢測(cè)ActiveX插件 467
18.5.3 跨瀏覽器檢測(cè) 469
18.6 Java applet 470
18.6.1 嵌入applet 470
18.6.2 在JavaScript中引用applet 471
18.6.3 創(chuàng)建applet 471
18.6.4 JavaScript到Java的通信 472
18.6.5 Java到JavaScript的通信 475
18.7 Flash動(dòng)畫(huà) 477
18.7.1 嵌入Flash動(dòng)畫(huà) 477
18.7.2 引用Flash動(dòng)畫(huà) 478
18.7.3 JavaScript到Flash的通信 478
18.7.4 Flash到JavaScript通信 481
18.8 ActiveX控件 483
18.9 小結(jié) 485
第19章 部署問(wèn)題 486
19.1 安全性 486
19.1.1 同源策略 486
19.1.2 窗口對(duì)象問(wèn)題 487
19.1.3 Mozilla特有的問(wèn)題 488
19.1.4 資源限制 490
19.2 國(guó)際化 491
19.2.1 使用JavaScript檢測(cè)語(yǔ)言 491
19.2.2 策略 492
19.2.3 字符串的思考 492
19.3 優(yōu)化JavaScript 495
19.3.1 下載時(shí)間 495
19.3.2 執(zhí)行時(shí)間 499
19.4 知識(shí)產(chǎn)權(quán)的問(wèn)題 512
19.4.1 混淆 512
19.4.2 Microsoft Script Encoder(僅IE) 513
19.5 小結(jié) 514
第20章 JavaScript的未來(lái) 515
20.1 ECMAScript 4 515
20.1.1 Netscape的提案 515
20.1.2 實(shí)現(xiàn) 521
20.2 ECMAScript for XML 522
20.2.1 途徑 522
20.2.2 for each..in循環(huán) 524
20.2.3 新的類 524
20.2.4 實(shí)現(xiàn) 532
20.3 小結(jié) 532
索引
Nicholas C.Zakas世界知名的JavaScript專家和Web開(kāi)發(fā)人員。Nicholas擁有豐富的Web開(kāi)發(fā)和界面設(shè)計(jì)經(jīng)驗(yàn),曾經(jīng)參與許多世界大公司的Web解決方案開(kāi)發(fā),并與他人合作撰寫(xiě)了暢銷書(shū)《Ajax高級(jí)程序設(shè)計(jì)》。
