JavaScript快速入門與開發(fā)實戰(zhàn)
定 價:89 元
- 作者:郭超 著
- 出版時間:2024/5/1
- ISBN:9787122433725
- 出 版 社:化學工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:268
- 紙張:
- 版次:01
- 開本:16開
本書分14章對JavaScript編程語言展開介紹,從JavaScript發(fā)展歷史到基本語法、面向對象編程、程序調試、DOM操作、BOM操作,最后到JavaScript高級應用,還有ES6新特性、Promise異步編程和模塊化開發(fā)等技術內容,全方位系統(tǒng)地介紹了作為一名前端開發(fā)人員所必須要掌握的JavaScript內容。
如果您有過JavaScript的開發(fā)經驗,相信您讀完這本書也會糾正個人技術認知上的部分誤區(qū),如果您是一位初學者,本書也同樣適合您,不過需要您把學習本書看作是一個長期任務,可以根據(jù)書中的編寫案例認認真真地加以練習總結,相信在不久后同樣可以深入掌握JavaScript。
第1章 JavaScript入門 001
1.1 初識JavaScript 001
1.1.1 JavaScript的發(fā)展歷史 001
1.1.2 JavaScript的特點 002
1.1.3 JavaScript的應用場景 002
1.1.4 JavaScript的開發(fā)工具 002
1.2 JavaScript的組成 003
小結 004
第2章 在網頁中使用JavaScript 005
2.1 行內方式 005
2.1.1 通過“JavaScript:”調用函數(shù) 005
2.1.2 在事件屬性中調用函數(shù) 005
2.2 內嵌方式 006
2.3 鏈接外部JavaScript文件方式 006
小結 006
第3章 JavaScript基本語法 007
3.1 變量 007
3.1.1 概述 007
3.1.2 變量的使用 007
3.1.3 變量的重新賦值 008
3.1.4 變量使用注意事項 008
3.1.5 變量命名規(guī)范 009
3.1.6 案例:兩個變量的交換 009
3.2 數(shù)據(jù)類型 010
3.2.1 概述 010
3.2.2 數(shù)據(jù)類型的分類 010
3.2.3 數(shù)字類型 010
3.2.4 字符串類型 011
3.2.5 布爾類型 012
3.2.6 Null類型 012
3.2.7 Undefined類型 013
3.2.8 typeof關鍵字 013
3.3 數(shù)據(jù)類型轉換 014
3.3.1 概述 014
3.3.2 顯式類型轉換 014
3.3.3 隱式類型轉換 015
3.4 運算符 016
3.4.1 概述 016
3.4.2 算術運算符 016
3.4.3 關系運算符 017
3.4.4 邏輯運算符 018
3.4.5 賦值運算符 019
3.4.6 三目運算符 020
3.4.7 運算符的優(yōu)先級 020
3.5 注釋 021
3.5.1 概述 021
3.5.2 單行注釋 021
3.5.3 多行注釋 021
3.6 輸入輸出語句 021
3.6.1 說明 021
3.6.2 輸入 021
3.6.3 輸出 022
3.7 任務練習 022
小結 023
第4章 程序結構 024
4.1 順序結構 024
4.2 選擇結構 024
4.2.1 if結構 025
4.2.2 if...else...結構 026
4.2.3 if...else if...else結構 027
4.2.4 switch結構 029
4.2.5 條件嵌套 031
4.2.6 多分支選擇結構和switch對比 032
4.3 循環(huán)結構 032
4.3.1 for循環(huán) 032
4.3.2 while循環(huán) 033
4.3.3 do...while循環(huán) 034
4.3.4 for和while的對比 035
4.3.5 while和do...while的對比 035
4.3.6 循環(huán)嵌套 036
4.4 跳轉語句 037
4.4.1 break語句 037
4.4.2 continue語句 038
4.5 任務練習 038
小結 039
第5章 數(shù)組 040
5.1 概述 040
5.2 定義數(shù)組 041
5.2.1 構造數(shù)組 041
5.2.2 數(shù)組字面量 041
5.3 訪問數(shù)組 041
5.3.1 數(shù)組下標 041
5.3.2 數(shù)組長度 042
5.4 數(shù)組遍歷 043
5.4.1 for循環(huán)索引方式 043
5.4.2 for...in方式 043
5.4.3 for...of方式 044
5.5 數(shù)組的常見操作 044
5.5.1 求數(shù)組最大值 044
5.5.2 兩個數(shù)組合并 045
5.5.3 數(shù)組篩選 045
5.5.4 數(shù)組翻轉 046
5.5.5 對數(shù)組元素去重 047
小結 047
第6章 程序調試及常見錯誤 048
6.1 為什么要進行程序調試 048
6.2 常見的程序調試方式 048
6.2.1 使用alert方法調試 048
6.2.2 使用log方法調試 049
6.3 Sources斷點調試 051
6.3.1 斷點調試概述 051
6.3.2 常用的調試按鈕 052
6.3.3 Watch監(jiān)視器的使用 052
6.4 程序常見錯誤 053
6.4.1 錯誤類型 053
6.4.2 錯誤解決 053
6.5 任務練習 054
小結 054
第7章 函數(shù) 055
7.1 概述 055
7.2 函數(shù)使用入門 055
7.2.1 定義函數(shù) 055
7.2.2 調用函數(shù) 056
7.3 深入理解函數(shù)作用 056
7.3.1 封裝重復性代碼 056
7.3.2 實現(xiàn)某種功能 057
7.4 函數(shù)參數(shù) 058
7.4.1 參數(shù)的作用 058
7.4.2 形參 058
7.4.3 實參 059
7.5 帶參數(shù)的函數(shù)調用的說明 059
7.5.1 形參和實參個數(shù)一樣 059
7.5.2 實參個數(shù)多于形參個數(shù) 060
7.5.3 實參個數(shù)少于形參個數(shù) 060
7.5.4 arguments對象 060
7.5.5 length屬性 061
7.5.6 arguments和length對比 061
7.6 函數(shù)的返回值 061
7.7 作用域 062
7.7.1 概述 062
7.7.2 全局作用域 062
7.7.3 局部作用域 062
7.7.4 全局變量 063
7.7.5 局部變量 063
7.7.6 作用域鏈 064
7.8 提升機制 065
7.8.1 函數(shù)表達式 065
7.8.2 問題引入及提升機制概述 066
7.8.3 變量提升 067
7.8.4 函數(shù)提升 067
7.9 高階函數(shù) 068
7.9.1 概述 068
7.9.2 函數(shù)作為參數(shù) 068
7.9.3 函數(shù)作為返回值 068
7.10 立即執(zhí)行函數(shù) 069
7.11 任務練習 069
小結 069
第8章 面向對象 071
8.1 概述 071
8.2 創(chuàng)建對象的方式 072
8.2.1 new Object方式 072
8.2.2 字面量方式 073
8.2.3 工廠函數(shù)方式 073
8.2.4 構造函數(shù)方式 074
8.3 原型prototype 076
8.3.1 構造函數(shù)創(chuàng)建對象問題引入 076
8.3.2 原型的使用 077
8.4 原型繼承 078
8.4.1 概述 078
8.4.2 透徹理解原型繼承 079
8.5 原型鏈 080
8.5.1 問題引入 080
8.5.2 原型對象中的__proto__ 081
8.5.3 Object原型對象的作用 081
8.5.4 Object原型對象中的__proto__ 082
8.6 this關鍵字理解 083
8.6.1 全局性普通函數(shù)中的this 083
8.6.2 構造函數(shù)中的this 083
8.6.3 對象方法中的this 083
8.6.4 原型對象方法中的this 084
8.7 繼承 084
8.7.1 對象冒充 085
8.7.2 call/apply方式 086
8.7.3 擴展Object類 087
8.7.4 原型方式 089
8.8 常用的內置對象 090
8.8.1 Math對象 090
8.8.2 字符串對象 091
8.8.3 日期對象 092
8.8.4 數(shù)組對象 093
8.8.5 布爾對象 097
8.8.6 數(shù)字對象 097
8.9 正則表達式 098
8.9.1 說明 098
8.9.2 概述 098
8.9.3 使用正則表達式 099
8.9.4 邊界符 099
8.9.5 范圍 100
8.9.6 量詞 100
8.9.7 括號的使用 101
8.9.8 元字符 102
8.9.9 修飾符 102
8.9.10 字符串在正則表達式中的使用 102
8.10 經典案例 103
8.10.1 統(tǒng)計每個字符的個數(shù) 103
8.10.2 隨機點名 103
8.10.3 倒計時 104
8.10.4 獲取文件擴展名 104
8.10.5 對象轉換為請求參數(shù)格式字符串 105
8.10.6 擴展Array對象 105
8.10.7 擴展String對象 106
8.10.8 計算長方形面積 106
8.10.9 遍歷對象 107
小結 107
第9章 DOM操作 108
9.1 概述 108
9.2 DOM節(jié)點 109
9.2.1 節(jié)點屬性 109
9.2.2 文檔節(jié)點 110
9.2.3 元素節(jié)點 110
9.2.4 屬性節(jié)點 110
9.2.5 文本節(jié)點 110
9.3 獲取元素及內容操作 110
9.3.1 根據(jù)id獲取元素 111
9.3.2 根據(jù)標簽名獲取元素 111
9.3.3 根據(jù)name獲取元素 111
9.3.4 根據(jù)類名獲取元素 112
9.3.5 根據(jù)選擇器獲取元素 112
9.3.6 獲取和設置元素內容操作 113
9.4 屬性操作 114
9.4.1 事件屬性 114
9.4.2 獲取內置屬性 114
9.4.3 設置內置屬性 115
9.4.4 獲取自定義屬性 115
9.4.5 設置自定義屬性 116
9.4.6 H5自定義屬性的規(guī)范 116
9.4.7 移除屬性 117
9.4.8 表單屬性 118
9.5 樣式操作 118
9.5.1 行內樣式操作 118
9.5.2 類名樣式操作 119
9.6 節(jié)點操作 120
9.6.1 獲取父節(jié)點 121
9.6.2 獲取子節(jié)點 121
9.6.3 獲取兄弟節(jié)點 122
9.6.4 創(chuàng)建及添加節(jié)點 123
9.6.5 刪除節(jié)點 123
9.6.6 復制節(jié)點 124
9.6.7 創(chuàng)建及設置屬性節(jié)點 125
9.7 DOM事件 125
9.7.1 概述 125
9.7.2 注冊事件 126
9.7.3 刪除事件 127
9.7.4 事件流 128
9.7.5 事件對象 131
9.7.6 阻止事件冒泡 132
9.7.7 阻止事件默認行為 132
9.7.8 事件委派 134
9.7.9 窗口事件 135
9.7.10 鼠標事件 136
9.7.11 鍵盤事件 138
9.7.12 表單事件 139
9.8 經典案例 140
9.8.1 簡易版新聞評論 140
9.8.2 簡易版新聞評論升級版 140
9.8.3 全選案例 142
9.8.4 隔行變色效果 143
小結 144
第10章 BOM操作 145
10.1 概述 145
10.2 window對象 145
10.2.1 概述 145
10.2.2 警告框 146
10.2.3 確認框 146
10.2.4 提示框 147
10.2.5 打開窗口 147
10.2.6 關閉窗口 148
10.3 location對象 148
10.3.1 概述 148
10.3.2 重新加載頁面 148
10.3.3 跳轉其他頁面 149
10.3.4 新頁面替換當前頁面 149
10.4 history對象 149
10.4.1 概述 149
10.4.2 常用方法 150
10.5 navigator對象 150
10.5.1 概述 150
10.5.2 檢測瀏覽器類型 150
10.6 定時器 151
10.6.1 概述 151
10.6.2 啟動延時定時器 151
10.6.3 取消延時定時器 151
10.6.4 啟動間隔定時器 152
10.6.5 取消間隔定時器 152
10.7 經典案例 153
10.7.1 顯示時鐘 153
10.7.2 顯示和隱藏切換 153
10.7.3 實現(xiàn)文本框內容校驗 154
10.7.4 模擬發(fā)送驗證碼 155
小結 155
第11章 JavaScript高級篇 156
11.1 嚴格模式 156
11.1.1 概述 156
11.1.2 開啟嚴格模式 156
11.1.3 整個腳本文件的嚴格模式 157
11.1.4 特定函數(shù)的嚴格模式 157
11.1.5 嚴格模式的使用影響 157
11.2 改變函數(shù)內this的指向 159
11.2.1 bind方式 160
11.2.2 call/apply/bind的總結 161
11.3 對象增強 161
11.3.1 Object.define Property() 162
11.3.2 Object.define Properties() 165
11.3.3 Object.keys() 166
11.3.4 Object.is() 167
11.3.5 Object.assign() 167
11.3.6 Object.create() 169
11.4 JavaScript的內存管理 170
11.4.1 概述 170
11.4.2 棧內存 170
11.4.3 堆內存 171
11.4.4 基本數(shù)據(jù)類型傳參 172
11.4.5 引用數(shù)據(jù)類型傳參 173
11.4.6 值傳遞和引用傳遞 174
11.4.7 垃圾回收 174
11.4.8 引用計數(shù)算法 175
11.4.9 標記清除算法 176
11.4.10 內存泄漏 176
11.5 閉包 179
11.5.1 案例思考 179
11.5.2 概述 181
11.5.3 閉包的實現(xiàn)原理 181
11.5.4 閉包的生命周期 183
11.5.5 閉包的應用 183
11.6 淺拷貝和深拷貝 184
11.6.1 引用賦值 185
11.6.2 淺拷貝 186
11.6.3 深拷貝 190
11.7 JSON 192
11.7.1 概述 192
11.7.2 對象結構 192
11.7.3 數(shù)組結構 193
11.7.4 區(qū)分JSON和JavaScript對象 193
11.7.5 JavaScript對象和JSON相互轉換 194
11.7.6 JSON使用時的注意事項 194
11.8 常見算法 195
11.8.1 冒泡排序 195
11.8.2 選擇排序 196
11.8.3 二分法查找 197
11.8.4 遞歸 198
11.9 防抖和節(jié)流 199
11.9.1 防抖 199
11.9.2 節(jié)流 201
11.9.3 防抖和節(jié)流的對比 204
11.10 WebStorage存儲方案 204
11.10.1 概述 204
11.10.2 分類 204
11.10.3 localStorage 205
11.10.4 sessionStorage 205
11.10.5 自定義工具類封裝 206
11.11 經典案例 207
11.11.1 Vue2響應式原理簡單實現(xiàn) 207
11.11.2 遞歸實現(xiàn)深拷貝 209
小結 210
第12章 ES6新特性 211
12.1 概述 211
12.1.1 為什么要學習ES6 211
12.1.2 ECMAScript的歷史 211
12.1.3 ECMAScript和JavaScript的關系 212
12.1.4 結束語 212
12.2 變量和常量 212
12.2.1 var定義變量的問題 212
12.2.2 let 213
12.2.3 const 214
12.3 字符串擴展 215
12.3.1 新增方法 215
12.3.2 模板字符串 216
12.3.3 其他方法擴展說明 217
12.4 變量的解構賦值 217
12.4.1 對象解構 217
12.4.2 數(shù)組解構 218
12.4.3 函數(shù)參數(shù)列表中的解構賦值 218
12.4.4 復雜對象的解構 219
12.5 函數(shù)擴展 219
12.5.1 剩余參數(shù) 219
12.5.2 函數(shù)參數(shù)默認值 219
12.6 箭頭函數(shù) 220
12.6.1 箭頭函數(shù)的寫法 220
12.6.2 箭頭函數(shù)的參數(shù)說明 221
12.6.3 箭頭函數(shù)的函數(shù)體說明 221
12.6.4 箭頭函數(shù)中的this 222
12.6.5 箭頭函數(shù)的注意事項 223
12.7 簡化對象寫法 223
12.7.1 對象的變量屬性簡寫 223
12.7.2 對象的函數(shù)屬性簡寫 224
12.8 數(shù)組對象的方法擴展 224
12.8.1 find方法 224
12.8.2 findIndex方法 225
12.8.3 of方法 225
12.8.4 from方法 225
12.9 展開運算符 226
12.9.1 數(shù)組展開 226
12.9.2 對象展開 227
12.10 class類 228
12.10.1 定義類 228
12.10.2 類的構造方法 229
12.10.3 實例對象的方法 230
12.10.4 靜態(tài)屬性和靜態(tài)方法 230
12.10.5 繼承 231
12.11 Set 233
12.11.1 概述 233
12.11.2 創(chuàng)建Set集合 233
12.11.3 常用方法和屬性 233
12.11.4 遍歷方式 234
12.12 Map 235
12.12.1 概述 235
12.12.2 創(chuàng)建Map集合 235
12.12.3 常用方法和屬性 236
12.12.4 遍歷方式 237
12.12.5 使用Map計算字符個數(shù) 238
小結 238
第13章 Promise異步編程 240
13.1 概述 240
13.2 JavaScript異步編程的實現(xiàn) 240
13.2.1 為什么JavaScript是單線程 240
13.2.2 JavaScript如何實現(xiàn)異步編程 241
13.3 回調函數(shù) 242
13.3.1 說明 242
13.3.2 事件處理程序 242
13.3.3 延遲計時器 243
13.3.4 回調函數(shù)再理解 243
13.3.5 回調地獄 244
13.4 Promise 244
13.4.1 概述 245
13.4.2 Promise對象的語法 245
13.4.3 Promise對象的屬性和方法 246
13.4.4 Promise的認識誤區(qū) 246
13.4.5 Promise的三種狀態(tài) 247
13.4.6 Promise的結果 248
13.4.7 then方法詳解 249
13.4.8 catch方法詳解 255
13.4.9 其他方法 257
13.5 async關鍵字 257
13.5.1 概述 257
13.5.2 異步函數(shù) 257
13.6 await關鍵字 258
13.6.1 概述 258
13.6.2 案例 258
小結 259
第14章 模塊化 260
14.1 傳統(tǒng)開發(fā)的弊端 260
14.1.1 命名沖突 260
14.1.2 文件依賴 260
14.2 生活中的模塊化 261
14.3 ES6模塊化概述 261
14.4 模塊化開發(fā) 262
14.4.1 導出變量和常量 262
14.4.2 導出函數(shù) 262
14.4.3 導出類 263
14.4.4 導出時別名的使用 263
14.4.5 導入時別名的使用 264
14.4.6 一次性導入 265
14.4.7 default默認導出 265
14.4.8 命名導出和默認導出混合使用 266
14.5 動態(tài)引入模塊 267
14.5.1 需求 267
14.5.2 import()表達式 267
14.5.3 動態(tài)引入模塊的使用場景 268
小結 268