JavaScript面向?qū)ο缶幊讨改?第3版
定 價:139.8 元
- 作者:[印]韋德·安塔尼(Ved Antani)[意]斯托揚·斯特凡諾夫
- 出版時間:2021/12/1
- ISBN:9787115544377
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312.8-62
- 頁碼:458
- 紙張:
- 版次:03
- 開本:16開
JavaScript語言是一種具有高度表達能力的、基于原型特性的、非常靈活的面向?qū)ο螅∣bject-Oriented,OO)編程語言。本書著重于介紹JavaScript在面向?qū)ο蠓矫娴奶匦裕詾槟阏故救绾螛?gòu)建強健、可維護、功能強大的應(yīng)用程序及程序庫。
本書是《JavaScript面向?qū)ο缶幊讨改稀返牡?版,全書包括13章和4個附錄。依次介紹了JavaScript的發(fā)展歷史、基礎(chǔ)知識(變量、數(shù)據(jù)類型、數(shù)組、循環(huán)以及條件表達式等)、函數(shù)、對象、迭代器和生成器、原型、繼承的實現(xiàn)、類與模塊、Promise與Proxy、瀏覽器環(huán)境、編程模式與設(shè)計模式、測試與調(diào)試和響應(yīng)式編程等。附錄部分包括學(xué)習(xí)JavaScript編程常用的參考資源。
本書覆蓋了JavaScript語言的OO特性,同時兼顧基礎(chǔ)知識,對初學(xué)者來說,是難得的JavaScript佳作,讀者不需要具備任何JavaScript基礎(chǔ)知識及項目經(jīng)驗。本書適用于任何希望學(xué)習(xí)JavaScript的編程初學(xué)者,也可以作為有JavaScript使用經(jīng)驗的讀者的參考書。
1.本書涵蓋了在構(gòu)建專業(yè)Web應(yīng)用程序時所需的大部分JavaScript相關(guān)知識。
2.本書從JavaScript的面向?qū)ο缶幊袒A(chǔ)開始講起,逐步深入到函數(shù)、對象和原型,并且講解了如何通過這些概念讓程序更清晰、更易于維護、運行速度更快,并與其他程序或庫兼容。
3.最后,本書介紹了如何將面向?qū)ο缶幊倘谌隬eb 開發(fā)工作流程,以構(gòu)建專業(yè)的JavaScript應(yīng)用程序。
4.本書提供配套源代碼和部分課后習(xí)題答案下載。
JavaScript是一種面向?qū)ο蟮某绦蛟O(shè)計語言,主要用于網(wǎng)站開發(fā)。目前開發(fā)的Web頁面主要由內(nèi)容(HTML)、表示(CSS) 和行為(JavaScript)三部分組成。JavaScript 是Web網(wǎng)頁的重要支柱之一,它負責(zé)網(wǎng)頁的運行。
本書能夠幫你把JavaScript編程技能提升到一個新的水平,從而為職業(yè)Web開發(fā)之旅做好準(zhǔn)備。
本書主要包括以下內(nèi)容:
■ 在 JavaScript 環(huán)境中應(yīng)用面向?qū)ο缶幊痰幕A(chǔ)
知識;
■ 熟練使用 JavaScript 控制臺;
■ 讓程序更清晰、運行速度更快,并與其他程序或庫
兼容;
■ 熟悉 ES6 新增的迭代器和生成器;
■ 熟練掌握 ECMAScript 6 的 Arrow 函數(shù);
■ 了解谷歌 Chrome 開發(fā)工具中的對象并使用它們;
■ 在工作流中混合使用原型繼承和復(fù)制屬性;
■ 在 JavaScript 代碼中應(yīng)用響應(yīng)式編程技術(shù)。
Veb Antani 擁有多年的使用JavaScript、Go以及Java開發(fā)大型服務(wù)器端及移動的平臺的經(jīng)驗。Stoyan Stefanov是Facebook公司工程師、作家、演說家。他經(jīng)常會在博客和相關(guān)會議中就Web開發(fā)話題發(fā)表獨到見解。
目錄
第 1章 JavaScript面向?qū)ο蟆?
1.1 回顧歷史 2
1.1.1 瀏覽器之爭 3
1.1.2 了解現(xiàn)狀 4
1.1.3 展望未來 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 對象 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 其他控制臺 16
1.7 小結(jié) 17
第 2章 基本數(shù)據(jù)類型、數(shù)組、循環(huán)及條件表達式 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 默認參數(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ù) 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章 對象 107
4.1 從數(shù)組到對象 107
4.1.1 元素、屬性、方法與成員 109
4.1.2 哈希表和關(guān)聯(lián)型數(shù)組 110
4.1.3 訪問對象屬性 110
4.1.4 調(diào)用對象方法 112
4.1.5 修改屬性與方法 113
4.1.6 使用this值 114
4.1.7 構(gòu)造器函數(shù) 115
4.1.8 全局對象 116
4.1.9 構(gòu)造器屬性 118
4.1.10 instanceof操作符 119
4.1.11 返回對象的函數(shù) 119
4.1.12 傳遞對象 121
4.1.13 比較對象 121
4.1.14 Webkit控制臺中的對象 122
4.1.15 ES6對象語法 124
4.2 對象屬性與類型 125
4.3 ES6對象方法 126
4.3.1 使用Object.assign復(fù)制對象屬性 126
4.3.2 使用Object.is方法進行比較 127
4.4 解構(gòu)賦值 128
4.5 內(nèi)建對象 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 推斷對象類型 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 迭代器與可迭代對象 179
5.2.1 迭代器 179
5.2.2 可迭代對象 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 擴展內(nèi)建對象 203
6.3.1 關(guān)于擴展內(nèi)建對象的討論 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—子對象訪問父對象的方式 220
7.4 將繼承部分封裝成函數(shù) 222
7.5 屬性復(fù)制 224
7.6 小心處理引用復(fù)制 226
7.7 對象之間的繼承 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 實現(xiàn) 243
7.14.3 測試 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 消息隊列 273
9.2.2 事件循環(huán) 273
9.2.3 計時器 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頁面中引入JavaScript代碼 285
10.2 BOM與DOM概覽 286
10.3 BOM 287
10.3.1 window對象再探 287
10.3.2 window.navigator屬性 288
10.3.3 控制臺的備忘功能 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é)點的訪問 303
10.4.3 DOM節(jié)點的修改 312
10.4.4 新建節(jié)點 315
10.4.5 移除節(jié)點 319
10.4.6 只適用于HTML的DOM對象 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 防止默認行為 330
10.5.7 跨瀏覽器的事件監(jiān)聽器 330
10.5.8 事件類型 332
10.6 XMLHttpRequest對象 333
10.6.1 發(fā)送請求 334
10.6.2 處理響應(yīng) 335
10.6.3 在早于IE 7的版本中創(chuàng)建XMLHttpRequest對象 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è)計模式 345
11.1 編程模式 346
11.1.1 行為隔離 346
11.1.2 命名空間 349
11.1.3 初始化時分支 352
11.1.4 惰性初始 353
11.1.5 配置對象 354
11.1.6 私有屬性和方法 356
11.1.7 特權(quán)方法 357
11.1.8 私有函數(shù)的公有化 357
11.1.9 即時函數(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è)計模式 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章 測試與調(diào)試 375
12.1 單元測試 376
12.1.1 測試驅(qū)動開發(fā) 376
12.1.2 行為驅(qū)動測試 377
12.1.3 mocha、chai以及sinon 382
12.2 調(diào)試JavaScript 382
12.2.1 語法錯誤 382
12.2.2 運行時異常 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的安裝及運行 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)建對象 410
附錄D 正則表達式 453