本書對JavaScript 的重難點進行了總結(jié),并通過具體場景比較不同解決方法的優(yōu)缺點。全書共7章,第1章是JavaScript 重點概念,第2章是引用數(shù)據(jù)類型,第3章是函數(shù),第4章是對象,第5章是DOM與事件,第6章是Ajax,第7章是ES6。
本書可作為Web前端開發(fā)、網(wǎng)頁設(shè)計與制作、網(wǎng)站建設(shè)人員的自學用書,也適合經(jīng)驗豐富的JavaScript開發(fā)人員深入學習。
這不是一本單純介紹JavaScript入門的書,而是一本專注解決問題的書。
1.頭條號專欄作者/阿里巴巴高級前端開發(fā)工程師多年經(jīng)驗總結(jié);
2.阿里巴巴/美團/騰訊/愛奇藝資深技術(shù)專家大力推薦;
3.從真實場景出發(fā),詳細拆解關(guān)鍵問題的不同解析思路,提供JavaScript高效學習路線。
系統(tǒng)梳理——解析開發(fā)過程中的易錯點、重難點,杜絕開發(fā)難題。
場景實現(xiàn)——每處重點均結(jié)合豐富場景全面剖析,提升實戰(zhàn)經(jīng)驗。
思路詳解——完整講述實例代碼實現(xiàn)的分析思路,力求授人以漁。
周雄,阿里巴巴高級前端開發(fā)工程師,負責前端工程、中后臺業(yè)務(wù)開發(fā),針對B端管理系統(tǒng)以及H5頁面開發(fā)有著豐富的實戰(zhàn)經(jīng)驗。
在今日頭條上維護頭條號“coder分享”,編寫前端領(lǐng)域技術(shù)文章,并錄制《git系列視頻教程》,深得用戶喜愛。
第 1章 JavaScript重點概念
1.1 JavaScript的基本數(shù)據(jù)類型介紹
1.2 Number類型詳解
1.2.1 Number類型介紹
1.2.2 Number類型轉(zhuǎn)換
1.2.3 isNaN()函數(shù)與Number.isNaN()函數(shù)對比
1.2.4 浮點型運算
1.3 String類型詳解
1.3.1 String類型的定義與調(diào)用
1.3.2 String類型常見算法
1.4 運算符
1.4.1 等于運算符
1.4.2 typeof運算符
1.4.3 逗號運算符
1.4.4 運算符優(yōu)先級
1.5 toString()函數(shù)與valueOf()函數(shù)
1.6 JavaScript中常用的判空方法
1.7 JavaScript中的switch語句
第 2章 引用數(shù)據(jù)類型
2.1 Object類型及其實例和靜態(tài)函數(shù)
2.1.1 深入了解JavaScript中的new操作符
2.1.2 Object類型的實例函數(shù)
2.1.3 Object類型的靜態(tài)函數(shù)
2.2 Array類型
2.2.1 判斷一個變量是數(shù)組還是對象
2.2.2 filter()函數(shù)過濾滿足條件的數(shù)據(jù)
2.2.3 reduce()函數(shù)累加器處理數(shù)組元素
2.2.4 求數(shù)組的最大值和最小值
2.2.5 數(shù)組遍歷的7種方法及兼容性處理(polyfill)
2.2.6 數(shù)組去重的7種算法
2.2.7 找出數(shù)組中出現(xiàn)次數(shù)最多的元素
2.3 Date類型
2.3.1 日期格式化
2.3.2 日期合法性校驗
2.3.3 日期計算
第3章 函數(shù)
3.1 函數(shù)的定義與調(diào)用
3.1.1 函數(shù)的定義
3.1.2 函數(shù)的調(diào)用
3.1.3 自執(zhí)行函數(shù)
3.2 函數(shù)參數(shù)
3.2.1 形參和實參
3.2.2 arguments對象的性質(zhì)
3.2.3 arguments對象的應(yīng)用
3.3 構(gòu)造函數(shù)
3.4 變量提升與函數(shù)提升
3.4.1 作用域
3.4.2 變量提升
3.4.3 函數(shù)提升
3.4.4 變量提升與函數(shù)提升的應(yīng)用
3.5 閉包
3.5.1 執(zhí)行上下文環(huán)境
3.5.2 閉包的概念
3.5.3 閉包的用途
3.5.4 小結(jié)
3.6 this使用詳解
3.7 call()函數(shù)、apply()函數(shù)、bind()函數(shù)的
使用與區(qū)別
3.7.1 call()函數(shù)的基本使用
3.7.2 apply()函數(shù)的基本使用
3.7.3 bind()函數(shù)的基本使用
3.7.4 call()函數(shù)、apply()函數(shù)、bind()函數(shù)的比較
3.7.5 call()函數(shù)、apply()函數(shù)、bind()函數(shù)的巧妙用法
第4章 對象
4.1 對象的屬性和訪問方式
4.1.1 對象的屬性
4.1.2 屬性的訪問方式
4.2 創(chuàng)建對象
4.3 對象克隆
4.3.1 對象淺克隆
4.3.2 對象深克隆
4.4 原型對象
4.4.1 原型對象、構(gòu)造函數(shù)、實例之間的關(guān)系
4.4.2 原型鏈
4.5 繼承
4.5.1 原型鏈繼承
4.5.2 構(gòu)造繼承
4.5.3 復(fù)制繼承
4.5.4 組合繼承
4.5.5 寄生組合繼承
4.6 instanceof運算符
4.6.1 instanceof運算符的常規(guī)用法
4.6.2 instanceof運算符用于繼承判斷
4.6.3 instanceof運算符的復(fù)雜用法
4.6.4 instanceof運算符的復(fù)雜用法的詳細處理過程
第5章 DOM與事件
5.1 DOM選擇器
5.1.1 傳統(tǒng)原生JavaScript選擇器
5.1.2 新型的querySelector選擇器和queryS electorAll選擇器
5.2 HTMLCollection對象與NodeList對象
5.3 常用的DOM操作
5.3.1 新增節(jié)點
5.3.2 刪除節(jié)點
5.3.3 修改節(jié)點
5.4 事件流
5.5 事件處理程序
5.5.1 DOM0級事件處理程序
5.5.2 DOM2級事件處理程序
5.5.3 DOM3級事件處理程序
5.6 Event對象
5.6.1 獲取Event對象
5.6.2 獲取事件的目標元素
5.6.3 target屬性與currentTarget屬性
5.6.4 阻止事件冒泡
5.6.5 阻止默認行為
5.7 事件委托
5.7.1 已有元素的事件綁定
5.7.2 新創(chuàng)建元素的事件綁定
5.8 contextmenu右鍵事件
5.9 文檔加載完成事件
5.9.1 load事件
5.9.2 ready事件
5.9.3 加載完成事件的執(zhí)行順序
5.10 瀏覽器的重排和重繪
5.10.1 重排
5.10.2 重繪
5.10.3 性能優(yōu)化
第6章
6.1 Ajaxr的基本原理及執(zhí)行過程
6.1.1 XMLHttpRequest對象
6.1.2 XMLHttpRequest對象生命周期
6.1.3 Ajax的優(yōu)缺點 253
6.2 使用Nodejs搭建簡易服務(wù)器
6.3 使用Ajax提交form表單
6.3.1 通用處理
6.3.2 使用原生Ajax進行提交
6.3.3 使用jQuery處理Ajax請求進行提交
6.3.4 使用jQuery序列化form表單進行提交
6.3.5 使用FormData對象進行提交
6.4 關(guān)于Ajax請求的get方式和post方式
6.4.1 get方式和post方式的區(qū)別
6.4.2 使用get方式和post方式需要注意的點
6.4.3 get方式和post方式的使用場景
6.5 Ajax進度事件
6.5.1 load事件
6.5.2 progress事件
6.6 JSON序列化和反序列化
6.6.1 JSON序列化
6.6.2 JSON反序列化
6.7 Ajax跨域解決方案
6.7.1 瀏覽器同源策略
6.7.2 瀏覽器跨域限制
6.7.3 Ajax跨域請求場景
6.7.4 CORS
6.7.5 JSONP
第7章 ES6
7.1 let關(guān)鍵字和const關(guān)鍵字
7.1.1 let關(guān)鍵字
7.1.2 const關(guān)鍵字
7.2 解構(gòu)賦值
7.2.1 數(shù)組的解構(gòu)賦值
7.2.2 對象的解構(gòu)賦值
7.3 擴展運算符與rest運算符
7.3.1 擴展運算符
7.3.2 rest運算符
7.4 模板字符串
7.4.1 字符串原生輸出
7.4.2 字符串變量值傳遞
7.5 箭頭函數(shù)
7.5.1 箭頭函數(shù)的特點
7.5.2 箭頭函數(shù)不適用的場景
7.6 ES6對于對象的擴展
7.6.1 屬性簡寫
7.6.2 屬性遍歷
7.6.3 新增Object.a(chǎn)ssign()函數(shù)
7.7 Symbol類型
7.7.1 Symbol類型的特性
7.7.2 Symbol類型的用法
7.8 Set數(shù)據(jù)結(jié)構(gòu)和Map數(shù)據(jù)結(jié)構(gòu)
7.8.1 Set數(shù)據(jù)結(jié)構(gòu)
7.8.2 Map數(shù)據(jù)結(jié)構(gòu)
7.9 Proxy
7.9.1 Proxy概述
7.9.2 Proxy實例函數(shù)及其基本使用
7.9.3 Proxy的使用場景
7.10 Reflect
7.10.1 Reflect概述
7.10.2 Reflect靜態(tài)函數(shù)
7.10.3 Reflect與Proxy
7.11 Promise
7.11.1 Promise誕生的原因
7.11.2 Promise的生命周期
7.11.3 Promise的基本用法
7.11.4 Promise的用法實例
7.12 Iterator與for...of循環(huán)
7.12.1 Iterator概述
7.12.2 默認Iterator接口
7.12.3 for...of循環(huán)
7.12.4 for...of循環(huán)與其他循環(huán)方式的比較
7.13 Generator()函數(shù)
7.13.1 Generator()函數(shù)的概述與特征
7.13.2 Generator()函數(shù)注意事項
7.14 Class
7.14.1 Class基本用法
7.14.2 class繼承
7.15 Module
7.15.1 Module概述
7.15.2 export命令
7.15.3 import命令
7.15.4 export default
7.15.5 Module加載的實質(zhì)