本書可分為基礎(chǔ)知識、核心技術(shù)、高級應(yīng)用和項目實戰(zhàn)四部分內(nèi)容;A(chǔ)知識部分主要包括標(biāo)識符、關(guān)鍵字和保留字、變量、數(shù)據(jù)類型、表達式和運算符、流程控制語句、在網(wǎng)頁中嵌入JavaScript代碼的三種方式以及程序調(diào)試方法等內(nèi)容;核心技術(shù)部分主要包括JavaScript函數(shù)、數(shù)組、JSON、字符串的處理、定時器、Math對象、Date對象、BOM對象、DOM模型以及使用DOM操作HTML文檔及表單和表格、使用JavaScript操作屬性和元素內(nèi)容、事件處理、正則表達式等內(nèi)容;高級應(yīng)用主要包括:JavaScript面向?qū)ο蠹敖M件開發(fā)、Ajax編程等內(nèi)容;項目實戰(zhàn)則是使用了HTML5+CSS3+JavaScript實現(xiàn)了一個云盤。
本書除了詳細介紹了JavaScript的基礎(chǔ)理論外,還詳細介紹了JavaScrilpt核心理論:“變量提升、作用域鏈、原型鏈”。本書最具特色的地方是提供了包括圖片的切換、圖片輪播、字符串查找與替換、選項卡、彈窗、上下文菜單、表單數(shù)據(jù)有效性校驗、瀑布流布局、留言本的實現(xiàn)等大量實用案例。
本書可作為大中專院校計算機及相關(guān)專業(yè)以及相關(guān)培訓(xùn)機構(gòu)的教材,也可作為網(wǎng)頁設(shè)計、網(wǎng)頁制作、網(wǎng)站建設(shè)、Web前端開發(fā)等開發(fā)人員的參考書。
JavaScript是在網(wǎng)頁設(shè)計中的一種腳本語言,用于實現(xiàn)頁面特效,為用戶提供更流暢美觀的瀏覽效果,而本書的內(nèi)容正是作者基于自己多年的工程師生涯所編寫的,真正扎根企業(yè)開發(fā)實戰(zhàn),提供大量企業(yè)實用案例,面向用戶的需求,同時又能為讀者提供系統(tǒng)、詳細的JS語言基礎(chǔ)知識。購買本書的讀者還可獲得妙味課堂一年的免費會員,可以免費觀看妙味課堂海量教學(xué)視頻、參與社區(qū)交流討論。
劉偉,妙味課堂 miaov.com 創(chuàng)始人,擁有8年工程師生涯,10年教育行業(yè)創(chuàng)業(yè)經(jīng)歷;
《前端HTML+CSS修煉之道》作者之一,出品視頻資料影響超過 500萬以上學(xué)員,網(wǎng)上零負評;現(xiàn)任開課吧合伙人、大課教研教學(xué) VP。
第 1章 JavaScript入門 1
1.1 JavaScript概述 1
1.1.1 JavaScript發(fā)展歷史 1
1.1.2 JavaScript組成部分及特點 2
1.1.3 JavaScript與Java的區(qū)別 3
1.1.4 JavaScript語法特點及編輯工具 3
1.1.5 JavaScript 的實際應(yīng)用場景 4
1.1.6 JavaScript實現(xiàn)網(wǎng)頁動態(tài)變化原理以及執(zhí)行順序 5
1.2 JavaScript代碼的調(diào)試方法 6
1.2.1 使用alert()方法調(diào)試腳本代碼 6
1.2.2 使用console.log()方法調(diào)試腳本代碼 8
1.2.3 使用Chrome的“開發(fā)者工具”調(diào)試腳本代碼 10
1.3 第 一個JavaScript實例 13
1.4 標(biāo)識符、關(guān)鍵字和保留字 19
1.5 直接量 20
1.6 變量 20
1.6.1 使用var、let和const聲明變量 20
1.6.2 變量的內(nèi)存分配 23
1.6.3 變量提升和預(yù)解析 25
1.6.3 變量的作用域 32
1.6.4 作用域鏈 34
1.7 數(shù)據(jù)類型 37
1.7.1 使用typeof運算符檢測數(shù)據(jù)類型 37
1.7.2 數(shù)字類型 38
1.7.3 字符串類型 39
1.7.4 布爾類型 41
1.7.5 函數(shù)類型 41
1.7.6 對象類型 42
1.7.7 null和undefined類型 42
1.7.8 數(shù)據(jù)類型的轉(zhuǎn)換 43
1.7.9 isNaN()的應(yīng)用 46
1.8 表達式和運算符 48
1.8.1 算術(shù)表達式 48
1.8.2 關(guān)系表達式 50
1.8.3 邏輯表達式 51
1.8.4 賦值表達式 55
1.8.5 條件表達式 56
1.8.6 new運算符 56
1.8.7 運算符的優(yōu)先級及結(jié)合性 57
1.9 語句 58
1.9.1 表達式語句 58
1.9.2 聲明語句 58
1.9.3 判斷語句 59
1.9.4 循環(huán)語句 65
1.9.5 循環(huán)終止和退出語句 68
1.10 在網(wǎng)頁中嵌入JS代碼 70
1.10.1 在HTML標(biāo)簽的事件屬性中直接添加腳本 70
1.10.2 使用script標(biāo)簽插入腳本代碼 71
1.10.3 使用script標(biāo)簽鏈接外部JS文件 72
練習(xí)題 73
第 2章 Array及JSON 74
2.1 數(shù)組及其在圖片切換中的應(yīng)用 74
2.1.1 數(shù)組的創(chuàng)建及其元素的引用 75
2.1.2 數(shù)組的常用方法及屬性 75
2.1.3 數(shù)組在圖片切換中的應(yīng)用 82
2.2 JSON 85
2.2.1 JSON數(shù)據(jù)格式及JSON變量的聲明及應(yīng)用 85
2.2.2 JSON與JS對象的相互轉(zhuǎn)換及應(yīng)用 86
2.2.3 使用for-in遍歷對象屬性 87
練習(xí)題 88
第3章 使用JavaScript操作屬性及元素內(nèi)容 89
3.1 使用JavaScript操作元素屬性及樣式屬性 90
3.1.1 屬性讀、寫操作 90
3.1.2 屬性操作注意事項 91
3.2 使用classList屬性操作類屬性 98
3.3 使用cssText屬性設(shè)置或修改元素行內(nèi)樣式 100
3.4 使用getComputedStyle()和currentStyle獲取樣式 102
3.5 使用innerHTML屬性訪問或設(shè)置元素內(nèi)容 103
3.6 自定義屬性及其在圖片切換中的應(yīng)用 105
3.6.1 自定義開關(guān)屬性及其在圖片切換中的應(yīng)用 106
3.6.2 自定義數(shù)字屬性及其在圖片切換中的應(yīng)用 107
3.6.3 自定義索引屬性及其在圖片切換中的應(yīng)用 108
練習(xí)題 111
第4章 JavaScript函數(shù) 112
4.1 函數(shù)定義 112
4.2 return語句詳解 114
4.3 函數(shù)調(diào)用 115
4.4 arguments實參集合對象 118
4.5 使用函數(shù)封裝圖片切換代碼及函數(shù)傳參實例 120
4.6 閉包 123
4.7 this指向及this的應(yīng)用 128
4.8 內(nèi)置函數(shù) 131
練習(xí)題 133
第5章 定時器、Math對象及Date對象 134
5.1 定時器 134
5.1.1 間歇定時器的創(chuàng)建與清除 134
5.1.2 延遲定時器的創(chuàng)建和清除 136
5.1.3 使用定時器實現(xiàn)圖片輪播 137
5.2 Math對象 138
5.3 Date對象的創(chuàng)建及其常用方法 140
5.4 使用定時器、Date對象和Math對象實現(xiàn)倒計時效果 142
練習(xí)題 143
第6章 字符串 144
6.1 字符串概述 144
6.2 操作字符:charAt()、charCodeAt()和fromCharCode() 146
6.3 字符搜索方法:indexOf()和lastIndexOf() 148
6.4 截取字符串方法:substring()、substr()和slice() 150
6.5 分割字符串方法:split() 152
6.6 字符串大小寫轉(zhuǎn)換及字符串的比較 155
練習(xí)題 156
第7章 使用HTML DOM對象操作HTML文檔 156
7.1 HTML DOM概述 156
7.2 節(jié)點類型 157
7.2.1 document根節(jié)點 158
7.2.2 使用document操作cookie 160
7.2.3 元素節(jié)點 163
7.2.4 屬性節(jié)點 164
7.2.5 文本節(jié)點 165
7.3 使用HTML DOM訪問HTML文檔 166
7.3.1 獲取文檔元素 166
7.3.2 操作元素屬性及元素內(nèi)容 167
7.3.3 獲取子節(jié)點 169
7.3.4 獲取父節(jié)點和兄弟節(jié)點 171
7.3.5 獲取元素的偏移位置 172
7.3.6 獲取元素的絕對位置 174
7.3.7 獲取元素的寬、高 175
7.4 使用DOM創(chuàng)建、插入、修改和刪除節(jié)點 176
7.5 使用HTML DOM克隆節(jié)點 178
7.6 使用HTML DOM操作表單 179
7.6.1 表單對象 179
7.6.2 表單元素對象 180
7.7 使用HTML DOM操作表格 184
練習(xí)題 188
第8章 BOM對象 189
8.1 BOM結(jié)構(gòu) 189
8.2 window對象 189
8.3 navigator對象 195
8.4 location對象 197
8.5 history對象 198
8.6 screen對象 199
練習(xí)題 200
第9章 事件處理 200
9.1 事件處理概述 200
9.2 事件處理程序的綁定 201
9.2.1 使用HTML標(biāo)簽的事件屬性綁定處理程序 202
9.2.2 使用事件源的事件屬性綁定處理程序 203
9.2.3 使用addEventListener()綁定處理程序 204
9.3 事件對象 205
9.4 事件流 206
9.4.1 事件冒泡 206
9.4.2 事件捕獲 211
9.4.3 W3C標(biāo)準(zhǔn)事件流 213
9.5 綁定事件的取消 214
9.6 事件默認行為的取消 215
9.7 使用oncontextmenu事件自定義上下文菜單 217
9.8 焦點事件 218
9.9 鍵盤事件 220
9.10 鼠標(biāo)拖拽事件 223
9.10.1 鼠標(biāo)拖拽原理 223
9.10.2 鼠標(biāo)拖拽問題及其解決方法 224
9.10.3 鼠標(biāo)拖拽事件應(yīng)用 227
9.11 鼠標(biāo)滾輪事件 232
練習(xí)題 233
第 10章 使用正則表達式進行模式匹配 234
10.1 模式匹配的引出:找出字符串中的所有數(shù)字 234
10.2 正則表達式的定義 235
10.2.1 正則表達式的定義方式 235
10.2.2 正則表達式中的轉(zhuǎn)義字符 236
10.2.3 正則表達式中的字符類 238
10.2.4 正則表達式中的量詞 239
10.2.6 正則表達式中的首尾匹配、排除符和選擇符 240
10.2.7 正則表達式中的分組 242
10.2.8 正則表達式中的修飾符 243
10.3 使用RegExp對象進行模式匹配 244
10.3.1 使用exec()進行模式匹配 244
10.3.2 使用test()進行模式匹配 245
10.4 使用string對象的模式匹配方法進行匹配 248
10.4.1 使用match()進行模式匹配 248
10.4.2 使用replace()進行模式匹配 249
10.4.3 使用search()進行模式匹配 251
10.4.4 使用字符串的模式匹配方法實現(xiàn)數(shù)據(jù)有效性校驗 252
練習(xí)題 253
第 11章 JavaScript面向?qū)ο蠹敖M件開發(fā) 254
11.1 JavaScript面向?qū)ο缶幊谈攀觥?54
11.2 JavaScript對象的創(chuàng)建 255
11.3 對象屬性和方法的訪問方式 269
11.4 原型鏈 270
11.5 使用面向?qū)ο蠓绞骄帉戇x項卡 273
11.6 包裝對象 278
11.7 toString()和valueOf() 279
11.8 JavaScript對象的繼承 281
11.8.1 通過原型鏈繼承對象 281
11.8.2 通過借用構(gòu)造函數(shù)實現(xiàn)繼承 284
11.8.3 組合繼承 286
11.8.4 拷貝繼承 287
11.8.5 原型繼承 289
11.8.6 寄生式繼承 290
11.8.7 寄生組合式繼承 292
11.8.8 類繼承 293
11.8.9 對象繼承在拖拽事件中的應(yīng)用 298
11.9 JavaScript組件開發(fā) 301
11.9.1 組件開發(fā)概述 301
11.9.2 拖拽組件的創(chuàng)建及應(yīng)用 302
11.9.3 彈窗組件的創(chuàng)建及應(yīng)用 304
11.9.4 自定義事件 312
練習(xí)題 316
第 12章 Ajax編程 317
12.1 XMLHttpRequest對象 317
12.1.1 創(chuàng)建XMLHttpRequest對象實例 318
12.1.2 發(fā)送GET和POST請求 319
12.1.3 獲取服務(wù)端返回的數(shù)據(jù) 324
12.2 使用 Ajax實現(xiàn)瀑布流布局 328
12.2.1 使用浮動布局瀑布流 328
12.2.2 使用絕對定位布局瀑布流 333
12.3 使用Ajax開發(fā)留言本 336
12.3.1 留言本涉及的數(shù)據(jù)庫表 336
12.3.2 留言本的HTML和CSS代碼及初始狀態(tài) 336
12.3.3 留言本的用戶注冊 340
12.3.4 登陸留言本 343
12.3.4 退出留言本 345
12.3.5 發(fā)表留言 346
12.3.6 列表顯示留言 349
12.3.7 使用Ajax實現(xiàn)類瀑布流布局效果的留言本 352
12.3.8 留言本的“頂”和“踩” 353
12.3 使用JSONP解決Ajax跨域問題 355
12.3.1 JSONP簡介 355
12.3.2 使用JSONP實現(xiàn)百度下拉提示 358
練習(xí)題 361
第 13章 Javascript項目實戰(zhàn) - 云盤 361
13.1 項目結(jié)構(gòu) 362
13.1.1 自適應(yīng)屏幕的頁面框架 362
13.1.2 頁面頭部布局 366
13.1.3 側(cè)邊欄布局 367
13.1.4 路徑導(dǎo)航布局 369
13.1.5 文件夾區(qū)域布局 371
13.1.6 彈窗及右鍵菜單 373
13.2 數(shù)據(jù)結(jié)構(gòu) 377
13.2.1 查找自己 378
13.2.2 查找子級 379
13.2.3 查找父級 379
13.2.4 查找所有父級 379
13.3 視圖渲染 379
13.3.1 側(cè)邊欄菜單渲染 379
13.3.2 路徑導(dǎo)航渲染 381
13.4 三大區(qū)域視圖切換 381
13.4.1 左側(cè)菜單點擊事件添加 382
13.4.2 路徑導(dǎo)航點擊事件添加 382
13.4.3 文件夾點擊事件添加 383
13.5 新建文件夾 383
13.5.1 添加一條新數(shù)據(jù) 383
13.5.2 文件夾命名處理 383
13.5.3 提示信息彈窗 384
13.5.4 完成新建文件夾功能 385
13.6 文件夾的右鍵菜單 385
13.6.1 右鍵菜單位置處理 385
13.6.2 刪除當(dāng)前文件夾 386
13.6.3 文件夾移動到 387
13.6.4 文件夾重命名 389
13.7 文件夾的選中及批量操作 392
13.7.1 點擊全選框勾選全部 392
13.7.2 文件的選中操作 393
13.7.2 框選操作 393
13.7.3 批量操作文件夾 395