首 頁(yè)
手機(jī)版

深入理解JavaScript 羅徹麥爾pdf掃描版

深入理解JavaScript是針對(duì)JavaScript初學(xué)者,幫助讀者掌握J(rèn)avaScript開發(fā)的精髓的JS開發(fā)深入指南,由美國(guó)程序員羅徹麥爾編著,全書通過一章章循序漸進(jìn)的閱讀幫助讀者掌握J(rèn)avaScript開發(fā)的精髓。每一章都是從教授語(yǔ)言的一個(gè)主題開始,并且都給出了實(shí)踐以及解決實(shí)際缺陷的指南,然后深入到相關(guān)的信息,能夠幫助入門的程序員理解基礎(chǔ)知識(shí),掌握核心實(shí)踐,甚至深入了解一些實(shí)踐方法的優(yōu)缺點(diǎn),做到知其然且知其所以然,歡迎js愛好者免費(fèi)下載閱讀。

全書簡(jiǎn)介

《深入理解javascript》是一本全面、深入介紹JavaScript語(yǔ)言的學(xué)習(xí)指南。本書共分四個(gè)部分,第1部分幫助讀者快速入手,掌握基本的JavaScript編程要點(diǎn);第2部分介紹JavaScript的發(fā)展和技術(shù)背景;第3部分深入探索JavaScript,介紹了語(yǔ)法、值、運(yùn)算符、布爾類型、數(shù)字、字符串、語(yǔ)句、異常捕獲、函數(shù)、變量、對(duì)象與繼承、數(shù)組、正則表達(dá)式、Date、Math、JSON、標(biāo)準(zhǔn)全局變量、編碼和JavaScript、ECMAScript 5的新特性等內(nèi)容;第4部分介紹技巧、工具和類庫(kù),幫助讀者更好地運(yùn)用JavaScript進(jìn)行編程。

本書包括以下內(nèi)容:

JavaScript快速上手:更習(xí)慣面向?qū)ο蟮木幊??這個(gè)部分會(huì)幫你更快更好地開始學(xué)習(xí)JavaScript。

背景:了解JavaScript的歷史,以及它與其他語(yǔ)言之間的關(guān)系。

深入JavaScript:詳細(xì)學(xué)習(xí)ECMAScript 5,從語(yǔ)法,變量,函數(shù),面向?qū)ο缶幊蹋俚秸齽t表達(dá)式和JSON,以及大量的示例。

技巧、工具和類庫(kù):對(duì)現(xiàn)有風(fēng)格指引、實(shí)踐、高階技術(shù)、模塊系統(tǒng)、包管理、構(gòu)建工具進(jìn)行調(diào)研和學(xué)習(xí)。

深入理解javascript章節(jié)目錄

第1部分 JavaScript快速上手

第1章 基礎(chǔ)JavaScript 3

1.1 背景 3

1.1.1 JavaScript與ECMAScript 3

1.1.2 JavaScript的影響和本質(zhì) 3

1.2 語(yǔ)法 4

1.2.1 語(yǔ)法概述 4

1.2.2 語(yǔ)句和表達(dá)式 5

1.2.3 分號(hào) 5

1.2.4 注釋 6

1.3 變量和賦值 6

1.3.1 賦值 6

1.3.2 復(fù)合賦值運(yùn)算符 6

1.3.3 標(biāo)識(shí)符與變量名 6

1.4 值 7

1.4.1 原始值和對(duì)象 8

1.4.2 原始值 9

1.4.3 對(duì)象 9

1.4.4 undefined和null 10

1.4.5 使用typeof和instanceof對(duì)值分類 11

1.5 布爾值 13

1.5.1 真值與假值 13

1.5.2 二元邏輯運(yùn)算符 14

1.5.3 等式運(yùn)算符 14

1.6 數(shù)字 14

1.7 運(yùn)算符 15

1.8 字符串 16

1.8.1 字符串運(yùn)算符 16

1.8.2 字符串方法 17

1.9 語(yǔ)句 17

1.9.1 條件語(yǔ)句 17

1.9.2 循環(huán)語(yǔ)句 18

1.10 函數(shù) 19

1.10.1 函數(shù)聲明的提升特性 19

1.10.2 特殊的變量arguments 20

1.10.3 參數(shù)太多或太少 20

1.10.4 可選參數(shù) 20

1.10.5 強(qiáng)制參數(shù)長(zhǎng)度 21

1.10.6 將arguments轉(zhuǎn)換為數(shù)組 21

1.11 異常捕獲 21

1.12 嚴(yán)格模式 22

1.13 變量作用域和閉包 22

1.13.1 變量是函數(shù)作用域的 23

1.13.2 變量的提升特性 23

1.13.3 閉包 23

1.13.4 IIFE模式:引入一個(gè)新的作用域 24

1.14 對(duì)象和構(gòu)造函數(shù) 25

1.14.1 單一對(duì)象 25

1.14.2 任意屬性名 26

1.14.3 提取方法 26

1.14.4 方法中的函數(shù) 27

1.14.5 構(gòu)造函數(shù):對(duì)象工廠 28

1.15 數(shù)組 29

1.15.1 數(shù)組字面量 29

1.15.2 數(shù)組方法 30

1.15.3 遍歷數(shù)組 30

1.16 正則表達(dá)式 31

1.16.1 test()方法:匹配嗎 31

1.16.2 exec()方法:匹配以及捕獲分組 31

1.16.3 replace()方法:搜索和替換 31

1.17 Math 32

1.18 標(biāo)準(zhǔn)庫(kù)的其他功能 32

第2部分 背景

第2章 為什么選擇JavaScript 35

2.1 JavaScript可以自由使用嗎 35

2.2 JavaScript優(yōu)雅嗎 36

2.3 JavaScript有用嗎 36

2.3.1 圖形用戶界面 36

2.3.2 其他技術(shù)補(bǔ)充完善JavaScript 36

2.4 JavaScript有什么好用的工具嗎 37

2.5 JavaScript是否足夠快 37

2.6 JavaScript是廣泛使用的嗎 38

2.7 JavaScript有前途嗎 38

2.8 結(jié)論 38

第3章 JavaScript的性質(zhì) 39

3.1 古怪和非官方特性 40

3.2 優(yōu)雅部分 40

3.3 影響 41

第4章 JavaScript是如何創(chuàng)造出來(lái)的 42

第5章 標(biāo)準(zhǔn)化:ECMAScript 44

第6章 JavaScript的歷史里程碑 46

第3部分 深入JavaScript

第7章 JavaScript的語(yǔ)法 53

7.1 語(yǔ)法概覽 53

7.2 注釋 54

7.3 表達(dá)式與語(yǔ)句 54

7.3.1 表達(dá)式 55

7.3.2 語(yǔ)句 55

7.4 控制流語(yǔ)句和塊 57

7.5 使用分號(hào)的規(guī)則 57

7.5.1 以塊結(jié)束的語(yǔ)句后面沒有分號(hào) 58

7.5.2 空語(yǔ)句 58

7.5.3 自動(dòng)分號(hào)插入 59

7.6 合法標(biāo)識(shí)符 60

7.7 數(shù)字字面量的方法調(diào)用 62

7.8 嚴(yán)格模式 62

7.8.1 啟用嚴(yán)格模式 62

7.8.2 嚴(yán)格模式:建議與注意事項(xiàng) 63

7.8.3 嚴(yán)格模式中,變量必須被聲明 63

7.8.4 嚴(yán)格模式下的函數(shù) 63

7.8.5 嚴(yán)格模式中,設(shè)置或者刪除不可改變的屬性會(huì)拋出異常 65

7.8.6 嚴(yán)格模式中的不合格標(biāo)識(shí)符不能刪除 65

7.8.7 嚴(yán)格模式中,eval更加簡(jiǎn)潔 66

7.8.8 嚴(yán)格模式中禁用的特性 66

第8章 值 67

8.1 JavaScript中的類型體系 67

8.1.1 JavaScript類型 67

8.1.2 靜態(tài)與動(dòng)態(tài) 68

8.1.3 靜態(tài)類型與動(dòng)態(tài)類型 68

8.1.4 靜態(tài)類型檢查和動(dòng)態(tài)類型檢查 68

8.1.5 強(qiáng)制轉(zhuǎn)換 69

8.2 原始值和對(duì)象 69

8.2.1 原始值 70

8.2.2 對(duì)象 70

8.3 undefined和null 72

8.3.1 undefined和null的出現(xiàn)場(chǎng)景 72

8.3.2 檢測(cè)undefined和null 73

8.3.3 undefined和null的歷史 74

8.3.4 修改undefined 75

8.4 原始值的包裝對(duì)象 76

8.4.1 包裝對(duì)象不同于原始值 76

8.4.2 原始值的包裝與去包裝 76

8.4.3 原始值從包裝器借調(diào)方法 77

8.5 強(qiáng)制類型轉(zhuǎn)換 78

8.5.1 強(qiáng)制類型轉(zhuǎn)換會(huì)隱藏bug 78

8.5.2 轉(zhuǎn)換成布爾值、數(shù)字、字符串和對(duì)象的函數(shù) 78

8.5.3 算法:ToPrimitive()—將值轉(zhuǎn)換為原始值 80

第9章 運(yùn)算符 82

9.1 運(yùn)算符和對(duì)象 82

9.2 賦值運(yùn)算符 82

9.3 等號(hào)運(yùn)算符:=== 和 == 84

9.3.1 嚴(yán)格相等(===,!==) 84

9.3.2 普通(寬松)相等(==,!=) 85

9.3.3 沒有針對(duì)==的有效用例 87

9.4 排序運(yùn)算符 88

9.5 加號(hào)運(yùn)算符(+) 89

9.6 布爾運(yùn)算符和數(shù)字運(yùn)算符 90

9.7 特殊運(yùn)算符 90

9.7.1 條件運(yùn)算符(?:) 90

9.7.2 逗號(hào)運(yùn)算符 91

9.7.3 void運(yùn)算符 91

9.8 通過typeof和instanceof判斷值類型 93

9.8.1 typeof:判斷原始值 93

9.8.2 instanceof:檢測(cè)對(duì)象是否是給定構(gòu)造函數(shù)的實(shí)例 95

9.9 對(duì)象運(yùn)算符 96

第10章 布爾類型 97

10.1 轉(zhuǎn)換成布爾值 97

10.1.1 手動(dòng)轉(zhuǎn)換為布爾值 97

10.1.2 真值和假值 98

10.2 邏輯運(yùn)算符 99

10.2.1 二元邏輯運(yùn)算符:與(&&)和或(||) 99

10.2.2 邏輯與(&&) 100

10.2.3 邏輯或(||) 100

10.2.4 邏輯非(!) 101

10.3 等號(hào)運(yùn)算符、排序運(yùn)算符 101

10.4 Boolean函數(shù) 102

第11章 數(shù)字 103

11.1 數(shù)字字面量 103

11.1.1 說(shuō)明 103

11.1.2 在字面量上調(diào)用方法 104

11.2 轉(zhuǎn)換成數(shù)字 104

11.2.1 手動(dòng)轉(zhuǎn)換為數(shù)字 104

11.2.2 parseFloat() 105

11.3 特殊的數(shù)字值 106

11.3.1 NaN 106

11.3.2 Infinity 108

11.3.3 兩個(gè)0 109

11.4 數(shù)字的內(nèi)部表示 111

11.5 處理舍入錯(cuò)誤 112

11.6 JavaScript中的整型 114

11.6.1 整型的范圍 114

11.6.2 將整型表示為浮點(diǎn)數(shù)字 115

11.6.3 安全的整型 116

11.7 轉(zhuǎn)換成整數(shù) 117

11.7.1 通過Math.floor(),Math.ceil()和Math.round()得到整數(shù) 118

11.7.2 通過定制函數(shù)ToInteger()得到整數(shù) 119

11.7.3 通過位運(yùn)算符得到32位整數(shù) 119

11.7.4 通過parseInt()得到整數(shù) 121

11.8 算術(shù)運(yùn)算符 122

11.9 位運(yùn)算符 125

11.9.1 背景知識(shí) 125

11.9.2 位運(yùn)算非操作符 126

11.9.3 二進(jìn)制位運(yùn)算符 126

11.9.4 位運(yùn)算移位操作符 127

11.10 Number函數(shù) 128

11.11 Number構(gòu)造器屬性 128

11.12 Number原型方法 129

11.12.1 Number.prototype.toFixed(fractionDigits?) 129

11.12.2 Number.prototype.toPrecision(precision?) 130

11.12.3 Number.prototype.toString(radix?) 130

11.12.4 Number.prototype.toExponential(fractionDigits?) 131

11.13 用于數(shù)字的函數(shù) 132

11.14 本章參考資料 132

第12章 字符串 133

12.1 字符串字面量 133

12.2 字符串字面量中的轉(zhuǎn)義字符 134

12.3 字符訪問 135

12.4 轉(zhuǎn)換為字符串 135

12.5 字符串比較 137

12.6 字符串拼接 137

12.6.1 合并:加號(hào)(+)運(yùn)算符 137

12.6.2 合并:拼接字符串?dāng)?shù)組 138

12.7 字符串函數(shù) 138

12.8 字符串構(gòu)造器方法 138

12.9 字符串length屬性 139

12.10 字符串原型方法 139

12.10.1 提取子字符串 139

12.10.2 字符串的變換 141

12.10.3 字符串的檢索和比較 142

12.10.4 支持正則表達(dá)式的方法 143

第13章 語(yǔ)句 145

13.1 聲明和變量賦值 145

13.2 循環(huán)語(yǔ)句和條件語(yǔ)句的主體 145

13.3 循環(huán) 146

13.3.1 循環(huán)的機(jī)制 146

13.3.2 while 147

13.3.3 do-while 147

13.3.4 for 147

13.3.5 for-in 148

13.3.6 for each-in 150

13.4 條件語(yǔ)句 150

13.4.1 if-then-else 150

13.4.2 switch 151

13.5 with語(yǔ)句 153

13.5.1 語(yǔ)法與語(yǔ)義 153

13.5.2 with語(yǔ)句已被廢棄 154

13.5.3 廢棄with的原因 154

13.6 debugger語(yǔ)句 156

第14章 異常捕獲 157

14.1 什么是異常捕獲 157

14.2 JavaScript中的異常捕獲 158

14.2.1 throw 159

14.2.2 try-catch-finally 159

14.2.3 例子 160

14.3 Error構(gòu)造器 161

14.4 棧跟蹤 162

14.5 實(shí)現(xiàn)一個(gè)自己的異常構(gòu)造器 163

第15章 函數(shù) 164

15.1 JavaScript中函數(shù)的3種形式 164

15.2 術(shù)語(yǔ):“形參”和“實(shí)參” 165

15.3 定義函數(shù) 165

15.3.1 函數(shù)表達(dá)式 166

15.3.2 函數(shù)聲明 167

15.3.3 Function構(gòu)造器 167

15.4 函數(shù)提升 167

15.5 函數(shù)的名稱 168

15.6 哪個(gè)更好,函數(shù)聲明還是函數(shù)表達(dá)式 168

15.7 控制函數(shù)調(diào)用:call(),apply()和bind() 169

15.7.1 func.a(chǎn)pply(thisValue, argArray) 169

15.7.2 func.bind(thisValue, arg1, ..., argN) 170

15.8 參數(shù)缺失或者超出時(shí)的處理 170

15.8.1 通過索引訪問所有參數(shù):神奇的arguments變量 170

15.8.2 強(qiáng)制性參數(shù),限制參數(shù)數(shù)量的最小值 172

15.8.3 可選參數(shù) 173

15.8.4 模擬參數(shù)的引用傳遞 173

15.8.5 陷阱:非預(yù)期的可選參數(shù) 174

15.9 具名參數(shù) 175

15.9.1 具名參數(shù)可作為描述信息 175

15.9.2 可選的具名參數(shù) 176

15.9.3 在JavaScript中模擬具名參數(shù) 176

第16章 變量:作用域、環(huán)境和閉包 177

16.1 定義變量 177

16.2 背景知識(shí):靜態(tài)性和動(dòng)態(tài)性 177

16.3 背景知識(shí):變量的作用域 178

16.4 變量以函數(shù)為作用域 179

16.5 變量聲明的提前 180

16.6 通過IIFE引入新的作用域 181

16.6.1 IIFE變體:前綴運(yùn)算符 182

16.6.2 IIFE變體:預(yù)內(nèi)置表達(dá)式上下文 183

16.6.3 IIFE變體:傳參的IIFE 183

16.6.4 IIFE的應(yīng)用 183

16.7 全局變量 184

16.7.1 最佳實(shí)踐:避免創(chuàng)建全局變量 184

16.7.2 模塊系統(tǒng)可以減少全局變量的引入 185

16.8 全局對(duì)象 185

16.8.1 跨平臺(tái)兼容 186

16.8.2 window的使用場(chǎng)景 186

16.9 環(huán)境:變量的管理 188

16.10 閉包:使得函數(shù)可以維持其創(chuàng)建時(shí)所在的作用域 191

16.10.1 通過環(huán)境來(lái)控制閉包 191

16.10.2 陷阱:不經(jīng)意間的環(huán)境共用 193

第17章 對(duì)象與繼承 195

17.1 第1層:?jiǎn)我粚?duì)象 195

17.1.1 屬性的種類 195

17.1.2 對(duì)象字面量 196

17.1.3 點(diǎn)運(yùn)算符(.):通過固定鍵值訪問屬性 197

17.1.4 特殊的屬性鍵 199

17.1.5 中括號(hào)操作符([]):通過計(jì)算出的鍵訪問屬性 199

17.2 把任意值轉(zhuǎn)化為對(duì)象 201

17.3 this作為函數(shù)和方法的隱式參數(shù) 202

17.3.1 在調(diào)用函數(shù)時(shí)設(shè)置 this:call(),apply()和bind() 202

17.3.2 “用于構(gòu)造函數(shù)的 apply()”詳細(xì)闡述了如何配合構(gòu)造函數(shù)

使用apply() 203

17.3.3 用于構(gòu)造函數(shù)的apply() 204

17.3.4 缺陷:提取方法時(shí)丟失 this 206

17.3.5 缺陷:方法中的函數(shù)會(huì)掩蓋 this 207

17.4 第2層:對(duì)象間的原型關(guān)系 209

17.4.1 繼承 209

17.4.2 覆寫 210

17.4.3 通過原型在對(duì)象間共享數(shù)據(jù) 210

17.4.4 獲取和設(shè)置原型 211

17.4.5 特殊屬性 __proto__ 213

17.4.6 設(shè)置和刪除僅影響自有屬性 214

17.5 遍歷和檢測(cè)屬性 215

17.5.1 列出自有的屬性鍵 215

17.5.2 列出所有的屬性鍵 216

17.5.3 檢測(cè)屬性是否存在 216

17.5.4 示例 217

17.6 最佳實(shí)踐:遍歷自有屬性 218

17.7 訪問器(getter 和 setter) 218

17.7.1 通過對(duì)象字面量定義訪問器 219

17.7.2 通過屬性描述符定義訪問器 219

17.7.3 訪問器和繼承 219

17.8 屬性特性和屬性描述符 220

17.8.1 屬性特性 220

17.8.2 屬性描述符 221

17.8.3 通過描述符獲取和定義屬性 221

17.8.4 復(fù)制對(duì)象 223

17.8.5 屬性:定義與賦值 224

17.8.6 繼承的只讀屬性不能被賦值 225

17.8.7 枚舉性:最佳實(shí)踐 225

17.9 保護(hù)對(duì)象 226

17.9.1 防止擴(kuò)展 226

17.9.2 封閉 227

17.9.3 凍結(jié) 228

17.9.4 缺陷:保護(hù)是淺層的 229

17.10 第3層:構(gòu)造函數(shù)—實(shí)例工廠 229

17.10.1 JavaScript 中 new 操作符的實(shí)現(xiàn) 231

17.10.2 術(shù)語(yǔ):兩個(gè)原型 231

17.10.3 實(shí)例的 constructor 屬性 232

17.10.4 instanceof 運(yùn)算符 234

17.10.5 實(shí)現(xiàn)構(gòu)造函數(shù)的小技巧 237

17.11 原型屬性中的數(shù)據(jù) 238

17.11.1 對(duì)于實(shí)例屬性,避免使用帶初始值的原型屬性 238

17.11.2 避免非多態(tài)的原型屬性 240

17.11.3 多態(tài)的原型屬性 241

17.12 保持?jǐn)?shù)據(jù)私有性 241

17.12.1 構(gòu)造函數(shù)環(huán)境中的私有數(shù)據(jù)(Crockford私有模式) 241

17.12.2 使用標(biāo)記的鍵的屬性保存私有數(shù)據(jù) 245

17.12.3 使用具體化鍵的屬性保存私有數(shù)據(jù) 246

17.12.4 通過IIFE保持全局?jǐn)?shù)據(jù)私有 247

17.13 第4層:構(gòu)造函數(shù)之間的繼承 248

17.13.1 繼承實(shí)例屬性 249

17.13.2 繼承原型屬性 249

17.13.3 確保instanceof正常工作 250

17.13.4 覆寫方法 251

17.13.5 父調(diào)用 251

17.13.6 避免硬編碼父構(gòu)造函數(shù)的名字 252

17.13.7 示例:構(gòu)造函數(shù)繼承 253

17.13.8 示例:內(nèi)建構(gòu)造函數(shù)的繼承層次結(jié)構(gòu) 254

17.13.9 反模式:原型是父構(gòu)造函數(shù)的實(shí)例 254

17.14 所有對(duì)象的方法 254

17.14.1 轉(zhuǎn)換為原始值 254

17.14.2 Object.prototype.toLocaleString() 255

17.14.3 原型式繼承和屬性 255

17.15 泛型方法:借用原型方法 256

17.15.1 通過字面量訪問Object.prototype和Array.prototype 257

17.15.2 調(diào)用泛型方法的例子 258

17.15.3 類似數(shù)組的對(duì)象和泛型方法 259

17.15.4 所有泛型方法列表 261

17.16 缺陷:Object作為Map使用 263

17.16.1 缺陷1:繼承影響讀取屬性 263

17.16.2 缺陷2:覆寫會(huì)影響調(diào)用方法 265

17.16.3 缺陷3:特殊屬性__proto__ 265

17.16.4 字典模式:沒有原型的對(duì)象更適合用作映射 266

17.16.5 最佳實(shí)踐 267

17.17 備忘錄:對(duì)象的使用 267

第18章 數(shù)組 269

18.1 概述 269

18.1.1 數(shù)組是映射,不是元組 270

18.1.2 數(shù)組也可以具有屬性 270

18.2 創(chuàng)建數(shù)組 270

18.2.1 數(shù)組構(gòu)造函數(shù) 271

18.2.2 多維數(shù)組 271

18.3 數(shù)組索引 272

18.3.1 操作符in與索引 273

18.3.2 刪除數(shù)組元素 273

18.3.3 數(shù)組索引的細(xì)節(jié) 273

18.4 長(zhǎng)度 275

18.4.1 手動(dòng)增加數(shù)組的長(zhǎng)度 275

18.4.2 減少數(shù)組的長(zhǎng)度 276

18.4.3 最大長(zhǎng)度 277

18.5 數(shù)組中的“空缺” 277

18.5.1 創(chuàng)建空缺 278

18.5.2 稀疏數(shù)組和密集數(shù)組 278

18.5.3 哪些操作會(huì)忽略空缺,而哪些不會(huì) 279

18.5.4 移除數(shù)組中的空缺 280

18.6 數(shù)組構(gòu)造函數(shù) 281

18.7 數(shù)組原型方法 281

18.8 添加和刪除元素(破壞性地) 281

18.9 排序和顛倒元素順序(破壞性地) 283

18.9.1 比較數(shù)字 284

18.9.2 比較字符串 284

18.9.3 比較對(duì)象 284

18.10 合并、切分和連接(非破壞性地) 285

18.11 值的查找(非破壞性地) 286

18.12 迭代(非破壞性地) 287

18.12.1 檢測(cè)方法 287

18.12.2 轉(zhuǎn)化方法 289

18.12.3 歸約函數(shù) 289

18.13 缺陷:類數(shù)組對(duì)象 291

18.14 最佳實(shí)踐:遍歷數(shù)組 291

第19章 正則表達(dá)式 293

19.1 正則表達(dá)式語(yǔ)法 293

19.1.1 原子:常規(guī) 293

19.1.2 原子:字符類 295

19.1.3 原子:分組 296

19.1.4 量詞 296

19.1.5 斷言 297

19.1.6 析取(或) 298

19.2 Unicode 和正則表達(dá)式 298

19.3 創(chuàng)建正則表達(dá)式 298

19.3.1 字面量與構(gòu)造函數(shù) 299

19.3.2 標(biāo)識(shí) 299

19.3.3 正則表達(dá)式的實(shí)例屬性 299

19.3.4 幾個(gè)創(chuàng)建正則表達(dá)式的例子 300

19.4 RegExp.prototype.test:是否存在匹配 300

19.5 String.prototype.search:匹配位置的索引 301

19.6 RegExp.prototype.exec:捕獲分組 301

19.6.1 首次匹配(不設(shè)置標(biāo)識(shí)/g) 302

19.6.2 全部匹配(設(shè)置標(biāo)識(shí) /g) 302

19.7 String.prototype.match:捕獲分組或返回所有匹配的子字符串 303

19.8 String.prototype.replace:查找和替換 303

19.8.1 Replacement 為字符串的情況 304

19.8.2 當(dāng)Replacement為函數(shù)時(shí) 305

19.9 標(biāo)識(shí) /g 的一些問題 305

19.10 提示與技巧 308

19.10.1 引用文本 308

19.10.2 陷阱:缺少斷言(例如^、$)的正則表達(dá)式可以在任意位置

匹配 308

19.10.3 匹配一切或什么都不匹配 308

19.10.4 手動(dòng)實(shí)現(xiàn)逆向查找 309

19.11 正則表達(dá)式備忘單 310

第20章 Date 313

20.1 Date構(gòu)造函數(shù) 313

20.2 Date構(gòu)造函數(shù)方法 315

20.3 Date原型方法 315

20.3.1 時(shí)間單位的getter和setter方法 316

20.3.2 各種各樣的getter和setter方法 317

20.3.3 將日期轉(zhuǎn)換成字符串 317

20.4 日期和時(shí)間格式 319

20.4.1 日期格式(無(wú)時(shí)間) 319

20.4.2 時(shí)間格式(無(wú)日期) 320

20.4.3 日期時(shí)間格式 321

20.5 時(shí)間值:從1970-01-01開始的毫秒數(shù) 321

第21章 Math 323

21.1 Math屬性 323

21.2 數(shù)值函數(shù) 324

21.3 三角函數(shù) 325

21.4 其他函數(shù) 327

第22章 JSON 329

22.1 背景 329

22.1.1 數(shù)據(jù)格式 329

22.1.2 歷史 330

22.1.3 語(yǔ)法 330

22.2 JSON.stringify(value, replacer?, space?) 334

22.2.1 被JSON.stringify()忽略的數(shù)據(jù) 335

22.2.2 toJSON()方法 336

22.3 JSON.parse(text, reviver?) 337

22.4 通過節(jié)點(diǎn)訪問函數(shù)轉(zhuǎn)換數(shù)據(jù) 338

22.4.1 JSON.stringify() 339

22.4.2 JSON.parse() 339

第23章 標(biāo)準(zhǔn)全局變量 341

23.1 構(gòu)造器 341

23.2 Error構(gòu)造器 342

23.3 非構(gòu)造器函數(shù) 342

23.3.1 文字的編碼和解碼 342

23.3.2 數(shù)值歸類與數(shù)值轉(zhuǎn)換 343

23.4 通過eval()和new Function()來(lái)動(dòng)態(tài)執(zhí)行JavaScript代碼 344

23.4.1 使用eval()執(zhí)行代碼 344

23.4.2 通過new Function()執(zhí)行代碼 346

23.4.3 eval()與new Function()比較 347

23.4.4 最佳實(shí)踐 347

23.4.5 結(jié)論 347

23.5 Console API 348

23.5.1 Console API在各引擎的標(biāo)準(zhǔn)程度如何 348

23.5.2 簡(jiǎn)單的日志記錄 349

23.5.3 檢查和計(jì)數(shù) 350

23.5.4 格式化的日志 350

23.5.5 性能和時(shí)間 352

23.6 名稱空間和特殊值 353

第24章 編碼和JavaScript 354

24.1 Unicode歷史 354

24.2 Unicode中的重要概念 354

24.3 碼位 356

24.4 Unicode編碼 357

24.5 JavaScript源碼和Unicode 359

24.5.1 內(nèi)部源碼轉(zhuǎn)化 359

24.5.2 源碼外部轉(zhuǎn)化 359

24.6 JavaScript字符串和Unicode 361

24.6.1 轉(zhuǎn)義序列 361

24.6.2 通過轉(zhuǎn)義引用星際平面的字符 361

24.6.3 字符長(zhǎng)度計(jì)算 362

24.6.4 Unicode正?;?362

24.7 JavaScript正則表達(dá)式和Unicode 363

24.7.1 匹配任意的碼元以及任意的碼位 364

24.7.2 庫(kù) 364

24.7.3 推薦閱讀的章節(jié)資源 364

第25章 ECMAScript 5的新特性 366

25.1 新特性 366

25.2 語(yǔ)法的改變 367

25.3 標(biāo)準(zhǔn)庫(kù)的新功能 367

25.3.1 元編程 367

25.3.2 新方法 368

25.3.3 JSON 369

25.4 兼容舊瀏覽器的小貼士 370

第4部分 技巧、工具和類庫(kù)

第26章 元編程風(fēng)格指南 373

26.1 現(xiàn)有風(fēng)格指南 373

26.2 通用技巧 374

26.2.1 代碼應(yīng)該具有一致性 374

26.2.2 代碼應(yīng)該易于理解 374

26.3 普遍認(rèn)可的最佳實(shí)踐 375

26.3.1 括號(hào)風(fēng)格 376

26.3.2 推薦字面量而不是構(gòu)造函數(shù) 377

26.3.3 不要自作聰明 378

26.3.4 可接受的技巧 379

26.4 具有爭(zhēng)議的規(guī)則 380

26.4.1 語(yǔ)法 380

26.4.2 變量 381

26.4.3 面向?qū)ο?382

26.4.4 其他 383

26.5 結(jié)論 384

第27章 調(diào)試的語(yǔ)言機(jī)制 385

第28章 子類化內(nèi)置構(gòu)造函數(shù) 386

28.1 術(shù)語(yǔ) 386

28.2 障礙1:具有內(nèi)部屬性的實(shí)例 386

28.2.1 障礙1的解決方法 388

28.2.2 注意 389

28.3 障礙2:內(nèi)置的構(gòu)造函數(shù)不能作為方法調(diào)用 389

28.4 另一種解決方案:委托 390

第29章 JSDoc:生成API文檔 392

29.1 JSDoc基礎(chǔ) 393

29.1.1 語(yǔ)法 393

29.1.2 命名類型 394

29.2 基礎(chǔ)的標(biāo)簽 395

29.3 文檔記錄函數(shù)和方法 396

29.4 行內(nèi)類型信息(“行內(nèi)文檔注釋”) 397

29.5 文檔記錄變量、參數(shù)和實(shí)例屬性 397

29.6 文檔記錄類 398

29.6.1 通過構(gòu)造函數(shù)定義類 399

29.6.2 通過對(duì)象字面量定義類 399

29.6.3 通過帶有@constructs方法的對(duì)象字面量定義類 400

29.6.4 子類 400

29.7 其他有用的標(biāo)簽 401

第30章 類庫(kù) 402

30.1 shim和polyfill 402

30.2 四個(gè)語(yǔ)言類庫(kù) 403

30.3 ECMAScript的國(guó)際化API 403

30.3.1 ECMAScript的國(guó)際化API,第1版 403

30.3.2 它是怎么樣的標(biāo)準(zhǔn)呢 404

30.3.3 我們可以用它做什么 404

30.3.4 延伸閱讀 404

30.4 JavaScript資源目錄 405

第31章 模塊系統(tǒng)和包管理器 407

31.1 模塊系統(tǒng) 407

31.2 包管理器 408

31.3 簡(jiǎn)單粗暴的模塊實(shí)現(xiàn) 408

第32章 其他工具 410

第33章 接下來(lái)該做什么 412

使用說(shuō)明

1、下載并解壓,得出pdf文件

2、如果打不開本文件,請(qǐng)務(wù)必下載pdf閱讀器

3、安裝后,在打開解壓得出的pdf文件

4、雙擊進(jìn)行閱讀

收起介紹展開介紹
  • 下載地址
深入理解JavaScript 羅徹麥爾pdf掃描版

有問題? 點(diǎn)此報(bào)錯(cuò)

發(fā)表評(píng)論

0條評(píng)論

熱門推薦