JavaScript面向?qū)ο缶幊讨改?第3版
定 價(jià):139.8 元
- 作者:[印]韋德·安塔尼(Ved Antani)[意]斯托揚(yáng)·斯特凡諾夫
- 出版時(shí)間:2021/12/1
- ISBN:9787115544377
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312.8-62
- 頁(yè)碼:458
- 紙張:
- 版次:03
- 開本:16開
JavaScript語(yǔ)言是一種具有高度表達(dá)能力的、基于原型特性的、非常靈活的面向?qū)ο螅∣bject-Oriented,OO)編程語(yǔ)言。本書著重于介紹JavaScript在面向?qū)ο蠓矫娴奶匦,以為你展示如何?gòu)建強(qiáng)健、可維護(hù)、功能強(qiáng)大的應(yīng)用程序及程序庫(kù)。
本書是《JavaScript面向?qū)ο缶幊讨改稀返牡?版,全書包括13章和4個(gè)附錄。依次介紹了JavaScript的發(fā)展歷史、基礎(chǔ)知識(shí)(變量、數(shù)據(jù)類型、數(shù)組、循環(huán)以及條件表達(dá)式等)、函數(shù)、對(duì)象、迭代器和生成器、原型、繼承的實(shí)現(xiàn)、類與模塊、Promise與Proxy、瀏覽器環(huán)境、編程模式與設(shè)計(jì)模式、測(cè)試與調(diào)試和響應(yīng)式編程等。附錄部分包括學(xué)習(xí)JavaScript編程常用的參考資源。
本書覆蓋了JavaScript語(yǔ)言的OO特性,同時(shí)兼顧基礎(chǔ)知識(shí),對(duì)初學(xué)者來(lái)說(shuō),是難得的JavaScript佳作,讀者不需要具備任何JavaScript基礎(chǔ)知識(shí)及項(xiàng)目經(jīng)驗(yàn)。本書適用于任何希望學(xué)習(xí)JavaScript的編程初學(xué)者,也可以作為有JavaScript使用經(jīng)驗(yàn)的讀者的參考書。
1.本書涵蓋了在構(gòu)建專業(yè)Web應(yīng)用程序時(shí)所需的大部分JavaScript相關(guān)知識(shí)。
2.本書從JavaScript的面向?qū)ο缶幊袒A(chǔ)開始講起,逐步深入到函數(shù)、對(duì)象和原型,并且講解了如何通過(guò)這些概念讓程序更清晰、更易于維護(hù)、運(yùn)行速度更快,并與其他程序或庫(kù)兼容。
3.最后,本書介紹了如何將面向?qū)ο缶幊倘谌隬eb 開發(fā)工作流程,以構(gòu)建專業(yè)的JavaScript應(yīng)用程序。
4.本書提供配套源代碼和部分課后習(xí)題答案下載。
JavaScript是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,主要用于網(wǎng)站開發(fā)。目前開發(fā)的Web頁(yè)面主要由內(nèi)容(HTML)、表示(CSS) 和行為(JavaScript)三部分組成。JavaScript 是Web網(wǎng)頁(yè)的重要支柱之一,它負(fù)責(zé)網(wǎng)頁(yè)的運(yùn)行。
本書能夠幫你把JavaScript編程技能提升到一個(gè)新的水平,從而為職業(yè)Web開發(fā)之旅做好準(zhǔn)備。
本書主要包括以下內(nèi)容:
■ 在 JavaScript 環(huán)境中應(yīng)用面向?qū)ο缶幊痰幕A(chǔ)
知識(shí);
■ 熟練使用 JavaScript 控制臺(tái);
■ 讓程序更清晰、運(yùn)行速度更快,并與其他程序或庫(kù)
兼容;
■ 熟悉 ES6 新增的迭代器和生成器;
■ 熟練掌握 ECMAScript 6 的 Arrow 函數(shù);
■ 了解谷歌 Chrome 開發(fā)工具中的對(duì)象并使用它們;
■ 在工作流中混合使用原型繼承和復(fù)制屬性;
■ 在 JavaScript 代碼中應(yīng)用響應(yīng)式編程技術(shù)。
Veb Antani 擁有多年的使用JavaScript、Go以及Java開發(fā)大型服務(wù)器端及移動(dòng)的平臺(tái)的經(jīng)驗(yàn)。Stoyan Stefanov是Facebook公司工程師、作家、演說(shuō)家。他經(jīng)常會(huì)在博客和相關(guān)會(huì)議中就Web開發(fā)話題發(fā)表獨(dú)到見解。
目錄
第 1章 JavaScript面向?qū)ο蟆?
1.1 回顧歷史 2
1.1.1 瀏覽器之爭(zhēng) 3
1.1.2 了解現(xiàn)狀 4
1.1.3 展望未來(lái) 5
1.2 ECMAScript 5 5
1.3 ECMAScript 6 6
1.3.1 ES6的瀏覽器支持情況 7
1.3.2 Babel 7
1.4 面向?qū)ο缶幊獭?
1.4.1 對(duì)象 9
1.4.2 類 10
1.4.3 封裝 10
1.4.4 聚合 11
1.4.5 繼承 12
1.4.6 多態(tài) 12
1.5 OOP小結(jié) 12
1.6 配置練習(xí)環(huán)境 13
1.6.1 WebKit開發(fā)者工具 14
1.6.2 Mac上的JavaScriptCore 15
1.6.3 其他控制臺(tái) 16
1.7 小結(jié) 17
第 2章 基本數(shù)據(jù)類型、數(shù)組、循環(huán)及條件表達(dá)式 18
2.1 變量 18
2.2 操作符 22
2.3 基本數(shù)據(jù)類型 25
2.3.1 查看類型操作符—typeof 25
2.3.2 數(shù)字 26
2.3.3 字符串 32
2.3.4 布爾值 38
2.3.5 undefined與null 44
2.3.6 Symbol 46
2.4 基本數(shù)據(jù)類型綜述 46
2.5 數(shù)組 47
2.5.1 增加、更新數(shù)組元素 48
2.5.2 刪除元素 49
2.5.3 數(shù)組的數(shù)組 49
2.6 條件與循環(huán) 51
2.6.1 代碼塊 51
2.6.2 循環(huán) 58
2.7 注釋 63
2.8 練習(xí)題 64
2.9 小結(jié) 64
第3章 函數(shù) 66
3.1 什么是函數(shù) 67
3.1.1 調(diào)用函數(shù) 67
3.1.2 參數(shù) 68
3.2 默認(rèn)參數(shù) 70
3.3 剩余參數(shù) 71
3.4 展開操作符 71
3.5 變量的作用域 78
3.6 塊作用域 81
3.7 函數(shù)也是數(shù)據(jù) 83
3.7.1 匿名函數(shù) 84
3.7.2 回調(diào)函數(shù) 85
3.7.3 即時(shí)函數(shù) 88
3.7.4 內(nèi)部(私有)函數(shù) 90
3.7.5 返回函數(shù)的函數(shù) 91
3.7.6 能重寫自己的函數(shù) 91
3.8 閉包 93
3.8.1 作用域鏈 93
3.8.2 利用閉包突破作用域鏈 94
3.8.3 循環(huán)中的閉包 98
3.8.4 getter與setter 100
3.8.5 迭代器 102
3.9 IIFE與作用域 103
3.10 箭頭函數(shù) 103
3.11 練習(xí)題 104
3.12 小結(jié) 105
第4章 對(duì)象 107
4.1 從數(shù)組到對(duì)象 107
4.1.1 元素、屬性、方法與成員 109
4.1.2 哈希表和關(guān)聯(lián)型數(shù)組 110
4.1.3 訪問(wèn)對(duì)象屬性 110
4.1.4 調(diào)用對(duì)象方法 112
4.1.5 修改屬性與方法 113
4.1.6 使用this值 114
4.1.7 構(gòu)造器函數(shù) 115
4.1.8 全局對(duì)象 116
4.1.9 構(gòu)造器屬性 118
4.1.10 instanceof操作符 119
4.1.11 返回對(duì)象的函數(shù) 119
4.1.12 傳遞對(duì)象 121
4.1.13 比較對(duì)象 121
4.1.14 Webkit控制臺(tái)中的對(duì)象 122
4.1.15 ES6對(duì)象語(yǔ)法 124
4.2 對(duì)象屬性與類型 125
4.3 ES6對(duì)象方法 126
4.3.1 使用Object.assign復(fù)制對(duì)象屬性 126
4.3.2 使用Object.is方法進(jìn)行比較 127
4.4 解構(gòu)賦值 128
4.5 內(nèi)建對(duì)象 130
4.5.1 Object 131
4.5.2 Array() 132
4.6 ES6中的數(shù)組方法 137
4.6.1 Array.from 137
4.6.2 使用Array.of創(chuàng)建數(shù)組 138
4.6.3 Array.prototype方法 139
4.6.4 函數(shù) 140
4.7 箭頭函數(shù)中的this 146
4.7.1 推斷對(duì)象類型 147
4.7.2 Boolean 148
4.7.3 Number 150
4.7.4 String 151
4.7.5 Math 157
4.7.6 Date 159
4.7.7 RegExp 164
4.8 練習(xí)題 174
4.9 小結(jié) 176
第5章 ES6中的迭代器和生成器 178
5.1 for...of循環(huán)結(jié)構(gòu) 178
5.2 迭代器與可迭代對(duì)象 179
5.2.1 迭代器 179
5.2.2 可迭代對(duì)象 180
5.3 生成器 181
5.4 集合 185
5.4.1 Map 185
5.4.2 Set 189
5.4.3 WeakMap和WeakSet 189
5.5 小結(jié) 190
第6章 原型 191
6.1 原型屬性 192
6.2 使用原型的方法與屬性 193
6.2.1 自身屬性與原型屬性 195
6.2.2 利用自身屬性覆寫原型屬性 196
6.2.3 isPrototypeOf()方法 200
6.2.4 秘密的__proto__鏈接 201
6.3 擴(kuò)展內(nèi)建對(duì)象 203
6.3.1 關(guān)于擴(kuò)展內(nèi)建對(duì)象的討論 204
6.3.2 原型陷阱 205
6.4 練習(xí)題 207
6.5 小結(jié) 208
第7章 繼承 210
7.1 原型鏈 210
7.1.1 原型鏈?zhǔn)纠?11
7.1.2 將共享屬性遷移到原型中去 214
7.2 只繼承于原型 217
7.3 uber—子對(duì)象訪問(wèn)父對(duì)象的方式 220
7.4 將繼承部分封裝成函數(shù) 222
7.5 屬性復(fù)制 224
7.6 小心處理引用復(fù)制 226
7.7 對(duì)象之間的繼承 229
7.8 深復(fù)制 231
7.9 object() 233
7.10 原型繼承與屬性復(fù)制的混合應(yīng)用 234
7.11 多重繼承 236
7.12 寄生式繼承 238
7.13 構(gòu)造器借用 239
7.14 案例學(xué)習(xí):圖形繪制 242
7.14.1 分析 243
7.14.2 實(shí)現(xiàn) 243
7.14.3 測(cè)試 248
7.15 練習(xí)題 249
7.16 小結(jié) 250
第8章 類與模塊 255
8.1 定義類 257
8.1.1 構(gòu)造器 259
8.1.2 原型方法 259
8.1.3 靜態(tài)方法 260
8.1.4 靜態(tài)屬性 261
8.1.5 生成器方法 261
8.2 子類化 261
8.3 模塊 264
8.4 小結(jié) 268
第9章 Promise與Proxy 269
9.1 異步編程模型 270
9.2 JavaScript調(diào)用!272
9.2.1 消息隊(duì)列 273
9.2.2 事件循環(huán) 273
9.2.3 計(jì)時(shí)器 273
9.3 Promise 276
9.3.1 創(chuàng)建Promise 278
9.3.2 元編程與Proxy 280
9.3.3 Proxy 281
9.3.4 函數(shù)攔截 282
9.4 小結(jié) 283
第 10章 瀏覽器環(huán)境 285
10.1 在HTML頁(yè)面中引入JavaScript代碼 285
10.2 BOM與DOM概覽 286
10.3 BOM 287
10.3.1 window對(duì)象再探 287
10.3.2 window.navigator屬性 288
10.3.3 控制臺(tái)的備忘功能 289
10.3.4 window.location屬性 289
10.3.5 window.history屬性 290
10.3.6 window.frames屬性 292
10.3.7 window.screen屬性 293
10.3.8 window.open()/close()方法 294
10.3.9 window.moveTo()方法和window.resizeTo()方法 295
10.3.10 window.alert()、window.prompt()和window.confirm()方法 295
10.3.11 window.setTimeout()和window.setInterval()方法 297
10.3.12 window.document屬性 299
10.4 DOM 299
10.4.1 Core DOM與HTML DOM 301
10.4.2 DOM節(jié)點(diǎn)的訪問(wèn) 303
10.4.3 DOM節(jié)點(diǎn)的修改 312
10.4.4 新建節(jié)點(diǎn) 315
10.4.5 移除節(jié)點(diǎn) 319
10.4.6 只適用于HTML的DOM對(duì)象 321
10.5 事件 324
10.5.1 內(nèi)聯(lián)HTML屬性法 324
10.5.2 元素屬性法 325
10.5.3 DOM的事件監(jiān)聽器 325
10.5.4 捕獲法與冒泡法 327
10.5.5 阻斷傳播 328
10.5.6 防止默認(rèn)行為 330
10.5.7 跨瀏覽器的事件監(jiān)聽器 330
10.5.8 事件類型 332
10.6 XMLHttpRequest對(duì)象 333
10.6.1 發(fā)送請(qǐng)求 334
10.6.2 處理響應(yīng) 335
10.6.3 在早于IE 7的版本中創(chuàng)建XMLHttpRequest對(duì)象 336
10.6.4 A代表異步 337
10.6.5 X代表XML 338
10.6.6 示例 338
10.7 練習(xí)題 340
10.8 小結(jié) 342
第 11章 編程模式與設(shè)計(jì)模式 345
11.1 編程模式 346
11.1.1 行為隔離 346
11.1.2 命名空間 349
11.1.3 初始化時(shí)分支 352
11.1.4 惰性初始 353
11.1.5 配置對(duì)象 354
11.1.6 私有屬性和方法 356
11.1.7 特權(quán)方法 357
11.1.8 私有函數(shù)的公有化 357
11.1.9 即時(shí)函數(shù) 358
11.1.10 模塊 359
11.1.11 鏈?zhǔn)秸{(diào)用 360
11.1.12 JSON 361
11.1.13 高階函數(shù) 363
11.2 設(shè)計(jì)模式 364
11.2.1 單例模式1 365
11.2.2 單例模式2 365
11.2.3 工廠模式 367
11.2.4 裝飾器模式 369
11.2.5 裝飾一棵圣誕樹 370
11.3 觀察者模式 371
11.4 小結(jié) 374
第 12章 測(cè)試與調(diào)試 375
12.1 單元測(cè)試 376
12.1.1 測(cè)試驅(qū)動(dòng)開發(fā) 376
12.1.2 行為驅(qū)動(dòng)測(cè)試 377
12.1.3 mocha、chai以及sinon 382
12.2 調(diào)試JavaScript 382
12.2.1 語(yǔ)法錯(cuò)誤 382
12.2.2 運(yùn)行時(shí)異!383
12.3 小結(jié) 388
第 13章 響應(yīng)式編程與React 390
13.1 響應(yīng)式編程 390
13.2 React 393
13.3 虛擬DOM 393
13.4 React的安裝及運(yùn)行 394
13.4.1 組件與props 398
13.4.2 state 399
13.4.3 生命周期函數(shù) 401
13.5 小結(jié) 402
附錄A 保留字 403
附錄B 內(nèi)建函數(shù) 407
附錄C 內(nèi)建對(duì)象 410
附錄D 正則表達(dá)式 453