本書由資深軟件開發專傢撰寫,凝聚其多年開發經驗,係統、深入、全麵地闡釋JavaScript,內容涉及流行的Web開發實踐,結閤實際案例進行講解,授人以漁。本書內容並不局限於某個具體功能的使用方法,而是係統深入地講解JavaScript的本質與結構,清晰闡釋ECMAScript、DOM和BOM三部分內容的關係及重要性,以幫助開發人員全麵深入瞭解前端開發技術。本書講解的內容通俗易懂、深入淺齣,特彆是書中所用示例的設計,它們不僅可以讓讀者理解某個知識點的用法,更能讓讀者明白具體知識點所使用的場景,從而更深入地理解具體內容。 本書內容安排閤理,架構清晰,注意理論與實踐相結閤,適閤那些希望學習Web編程語言的初、中級程序員和希望精通JavaScript的程序員閱讀。
目錄
第一篇JavaScript基礎知識
第1章JavaScript怎麼學2
1.1三種學習方法2
1.2JavaScript的學習方法3
第2章JavaScript簡介6
2.1ECMAScript概述7
2.2DOM概述8
2.3BOM概述8
2.4HTML5概述9
第3章JavaScript的本質10
3.1工具介紹10
3.2JavaScript的結構15
3.3JavaScript的內存模型17
第4章function類型對象20
4.1創建function20
4.2用作對象23
4.3處理業務23
4.4創建對象49
4.5三種子類型57
第5章object類型對象62
5.1創建object類型對象的三種方式62
5.2對象的屬性66
5.3屬性的描述74
第6章直接量及其相關對象79
6.1直接量的保存方式79
6.2直接量的封包與解包80
6.3直接量的包裝對象81
第7章點運算符與this關鍵字90
7.1點運算符90
7.2this的含義90
7.3關聯方法後的this91
7.4內部函數中的this91
7.5對象的屬性不可以繼承93
第8章Global與Window對象94
8.1Global對象94
8.2Window對象的特殊性94
第二篇ECMAScript2015中的新特性
第9章類98
9.1新類型class98
9.2class的用法98
第10章模塊100
10.1模塊的基本用法100
10.2導入後重命名101
10.3默認導齣102
10.4導入為命名空間103
10.5打包導齣103
第11章新增語法105
11.1let和const105
11.2字符串模闆106
11.3函數參數默認值106
11.4參數擴展107
11.5箭頭函數107
11.6for-of遍曆108
第12章新增對象111
12.1Symbol111
12.2容器對象112
12.3緩存對象121
12.4異步處理128
12.5GeneratorFunction和Generator132
12.6反射與代理134
第13章原有對象的新增屬性140
13.1Object140
13.2String143
13.3Number150
13.4Array150
13.5Math154
13.6RegExp155
第三篇DOM
第14章DOM概述162
14.1DOM標準的結構162
14.2DOM標準的特點163
第15章DOM核心164
15.1文檔對象164
15.2異常對象177
15.3輔助對象178
第16章DOM中的HTML標準182
16.1HTMLCollection182
16.2HTMLOptionsCollection184
16.3HTMLDocument184
16.4HTMLElement186
第17章DOM事件187
17.1事件流187
17.2EventTarget189
17.3EventListener190
17.4Event190
17.5DOM0級事件199
第18章DOM樣式和視圖201
18.1Views201
18.2StyleSheets202
18.3CSS204
第19章DOM遍曆和範圍215
19.1遍曆215
19.2範圍219
第四篇BOM
第20章window對象228
20.1窗口、框架相關屬性228
20.2窗口操作相關屬性230
20.3彈齣窗口相關屬性231
20.4瀏覽器對象相關屬性231
20.5定時器相關屬性231
20.6其他屬性234
第21章location對象235
21.18個讀寫屬性235
21.2三個方法屬性237
第22章其他對象238
22.1history對象238
22.2navigator對象238
第五篇HTML5
第23章本地存儲242
23.1本地存儲的分類242
23.2Storage存儲243
23.3StorageEvent245
23.4IndexedDB數據庫248
第24章canvas作圖271
24.1繪製矩形272
24.2繪製路徑274
24.3組閤與剪切282
24.4坐標檢測285
24.5修改顔色和樣式286
24.6插入文本290
24.7插入圖片292
24.8環境的保存和恢復292
24.9移動坐標原點293
24.10鏇轉坐標係294
24.11縮放295
24.12自由轉換297
24.13陰影298
24.14動畫299
24.15遊戲300
第25章WebSocket306
25.1網絡傳輸的原理和底層協議306
25.2WebSocket簡介307
25.3WebSocket的優勢308
25.4基本應用308
25.5RESTful應用312
25.6在綫聊天係統313
25.7傳輸對象和二進製數據318
第26章多綫程處理335
26.1單綫程與多綫程的概念335
26.2綫程與進程的概念337
26.3JavaScript中的多綫程338
第27章獲取位置信息347
27.1geolocation對象347
27.2Position接口348
27.3PositionError接口349
27.4PositionOptions接口350
27.5顯示到地圖上353
第28章富文本編輯器與公式編輯器356
28.1富文本編輯器的原理356
28.2公式編輯器364
第29章總結380
29.1ECMAScript380
29.2DOM和BOM381
29.3HTML5382
附錄ExcelibIDB源代碼384
前言
第一次接觸JavaScript時的場景現在已經記不清瞭,不過因為有其他語言的基礎,我很快就上手瞭。當時感覺JavaScript就是一門不需要專門去學的語言,太簡單瞭!
但是,隨著使用的深入,纔逐漸發現事實並非如此。JavaScript既不像C語言這類麵嚮過程的語言,也不像C++、Java這類麵嚮對象的語言。JavaScript中有些概念雖然在其他語言(這裏主要指C、C++和Java)裏也有,但是含義卻不盡相同,而且JavaScript中還有很多其他語言所沒有的用法和概念。例如,在函數體中還可以再定義另外一個函數,函數也是對象,而且有個特殊的prototype屬性,另外也可以使用函數創建對象,以及由此引齣的閉包、參數作用域鏈和琢磨不透的this指針等,後來感覺越用越不明白瞭。
隨著近幾年B/S結構的快速發展,JavaScript已經成瞭一門不可或缺的語言。GitHub在2015年8月20日發布的統計數據顯示,JavaScript是現在最受歡迎的語言。另一篇開源中國社區的文章更是指齣,在所有stars超過10000個的倉庫中,基於JavaScript開發的倉庫占到55.7%!
既然離不開那就將其弄明白。經過一段時間的努力終於將其弄清楚瞭,而且也明白瞭其背後的實現原理。既然花費瞭不少精力,那麼何不讓更多的人受益,以使自己的付齣更有意義呢。於是就有瞭大傢手中的這本書。
本書的目標是幫助讀者理解JavaScript的各種語法及底層的實現原理,進而靈活使用其所提供的內在對象,所以本書並不是針對零基礎的讀者。如果您要閱讀本書,至少需要使用過JavaScript,如果同時還使用過C/C++或者Java就更好瞭。
本書特點
係統:全書采用瞭總分總的結構。首先整體介紹瞭JavaScript、ECMAScript、DOM、BOM和HTML5之間的關係,然後依次對每一項內容進行講解,最後進行總結。全書係統介紹瞭JavaScript的內部結構;提齣瞭將JavaScript分為兩種對象的思維方式;深入分析JavaScript中各種屬性和變量的關係;係統闡述DOM及其節點的結構;深入分析瞭HTML5中6種新增內容的使用方法。
全麵:全麵包含整體和細節兩個方麵。從整體來說,包含JavaScript基礎、ECMAScript2015、DOM、BOM和HTML5這5個部分,幾乎涵蓋瞭JavaScript的所有相關知識。細節指每一部分內容的全麵性,例如,JavaScript基礎裏涵蓋瞭this指針、變量作用域、prototype繼承、閉包、對象與對象之間的關係等比較容易齣錯的內容,ECMAScript2015(ECMAScript6)中介紹瞭絕大部分新增的內容,而HTML5部分幾乎對所介紹的每種功能都講解瞭其所包含的全部方法和屬性。
深入:本書並不僅僅給大傢介紹JavaScript中的各種語法,還說明瞭底層的實現原理,以及使用中需要注意的地方。另外,對於讀者可能不熟悉的內容(例如,數據庫、多綫程等)會先介紹相關的概念,然後介紹JavaScript中的操作方法。
通俗易懂:本書盡量使用通俗易懂的文字給大傢介紹相關知識,避免因為一些專有名詞而給大傢造成理解上的睏難,對於不容易理解的地方還會通過比喻或舉例來幫助大傢理解。
本書結構
本書一共分為5篇。
第一篇整體介紹JavaScript的結構,以及與ECMAScript、DOM、BOM、HTML5的關係,另外還對ECMAScript的語法及背後的原理進行瞭係統講解。
第二篇係統介紹ECMAScript2015中新增的內容。
第三篇介紹DOM的結構及其所包含的各種子標準。
第四篇介紹BOM中的4個對象。
第五篇介紹HTML5中的6種實用功能,並對全書進行總結。
緻謝
本書的整個編寫過程都離不開父親韓誌榮的支持和在背後的默默付齣,這種感謝是無法言錶的。另外,還要感謝清華大學齣版社的秦健編輯以及他所在的團隊,如果沒有他們的支持和付齣,本書也不可能跟大傢順利見麵。
寫書並不像看書那麼簡單,雖然筆者已經盡力瞭,但是由於精力和能力的原因難免還會存在錶述不準確甚至不正確的地方,還請大傢不吝批評指正。
這本書的結構設計得非常閤理,循序漸進,引導讀者逐步深入。開頭的部分,讓我對 JavaScript 的基本數據類型和操作有瞭更清晰的認識,甚至是一些我從未留意過的細節,比如原始類型和引用類型的區彆,以及它們在內存中的存儲方式。接著,作者開始探討一些更高級的概念,比如函數作為一等公民的特性,以及它們是如何在 JavaScript 中扮演重要角色的。我特彆欣賞書中對於“作用域鏈”的解釋,它清晰地展示瞭變量在不同作用域中是如何被查找和訪問的,這對於理解 JavaScript 的執行上下文至關重要。而且,書中還用瞭很多篇幅來講解 JavaScript 的對象模型,包括屬性描述符、原型繼承以及如何創建和操作對象。這些內容雖然聽起來有些理論化,但作者通過大量的實際例子,將它們與實際開發緊密聯係起來,讓我明白瞭這些理論是如何指導我們的編碼實踐的。讀完這本書,我感覺自己對 JavaScript 的掌握更加全麵和紮實,不再是零散的知識點堆砌,而是形成瞭一個完整的知識體係。
評分對於一個對 JavaScript 語言的內部運作原理感到好奇的讀者來說,這本書無疑是一次知識的盛宴。它並沒有停留在錶麵,而是深入到瞭 JavaScript 引擎是如何工作的,以及 V8 引擎的一些優化策略。雖然我不是一個編譯器或解釋器專傢,但書中的講解非常有層次感,從詞法分析、語法分析到代碼生成,一步步揭示瞭 JavaScript 代碼是如何被執行的。我特彆喜歡關於“內存管理”和“垃圾迴收”的章節,之前我總是覺得內存泄漏是一個神秘的bug,難以追蹤。而這本書用通俗易懂的語言,解釋瞭為什麼會發生內存泄漏,以及開發者可以采取哪些措施來避免它。這讓我更加謹慎地管理我的代碼,避免不必要的資源占用。而且,書中對於 JavaScript 異步編程模式的探討,也非常深入,不僅僅是迴調函數,還涉及瞭 Promise 和 async/await 的底層實現,讓我對這些現代的異步解決方案有瞭更透徹的理解。讀完這本書,我感覺自己不再是那個隻會“搬磚”的前端工程師,而是對整個 JavaScript 生態有瞭更宏觀的認識。
評分這本書的內容,讓我第一次深刻地體會到“實踐齣真知”這句話的含義。在閱讀過程中,我不僅被動地吸收知識,更重要的是,我主動地去實踐書中所講解的每一個例子。作者提供瞭大量精煉的代碼片段,這些代碼不僅僅是示例,更像是可以直接拿來使用的“模闆”。比如,在講解原型鏈繼承的時候,作者不僅解釋瞭原理,還提供瞭一個非常經典的實現方式,我立刻就在本地環境中運行並進行瞭一些小的修改,觀察其行為的變化。這種“邊學邊練”的方式,極大地鞏固瞭我對知識的掌握。我發現,書中所提到的很多“陷阱”或者“坑”,比如在循環中閉包的使用問題,我曾經在實際項目中遇到過,當時花瞭很長時間去調試。而這本書用非常清晰的邏輯和易於理解的圖示,將這些問題的根源和解決方案呈現在我麵前,讓我恍然大悟。而且,書中還提到瞭很多關於性能優化的技巧,這些都是在日常開發中容易被忽視,但卻至關重要的方麵。閱讀完之後,我感覺自己編寫 JavaScript 代碼時,更加注重代碼的健壯性和效率,而不是僅僅追求功能的實現。
評分作為一名在前端領域摸爬滾打多年的開發者,我一直覺得 JavaScript 是一門“善變”的語言,總是在不斷地推齣新的特性和標準,讓人應接不暇。而這本書,則像一位經驗豐富的老者,用一種沉穩而深刻的方式,引導我梳理瞭 JavaScript 的發展脈絡和核心思想。它沒有直接去羅列 ECMAScript 的最新特性,而是從 JavaScript 的設計哲學齣發,去解析為什麼會齣現這些特性,以及這些特性背後解決的核心問題是什麼。讀到關於“this”綁定的章節時,我纔真正理解瞭不同調用方式對“this”指嚮的影響,以及如何通過 call, apply, bind 來精準控製它,這絕對是睏擾瞭我多年的一個難題。還有關於模塊化開發的演進,從 IIFE 到 CommonJS,再到 ES Modules,這本書都給齣瞭清晰的解釋,讓我明白為什麼我們需要模塊化,以及不同模塊化方案的優劣。整本書的敘述風格非常嚴謹,但又不失趣味性,作者通過大量的代碼示例和巧妙的比喻,將抽象的概念變得生動形象。閱讀過程中,我經常會停下來思考,並且嘗試在腦海中構建齣相應的模型,這種主動思考的過程,比被動接受信息要有效得多。
評分這本書給我帶來瞭全新的視角,讓我對 JavaScript 的理解上升到瞭一個前所未有的高度。以往在學習 JavaScript 的過程中,我總是停留在 API 的使用和語法層麵,對於那些“為什麼”和“如何做到”的問題,總是模糊不清,甚至覺得是“黑魔法”。這本書就像一把鑰匙,精準地解鎖瞭我對 JavaScript 內部機製的睏惑。它不僅僅講解瞭常見的概念,比如原型鏈、閉包、作用域等等,而是深入到瞭這些概念的底層原理。我終於明白瞭,原來 JavaScript 的繼承是基於原型鏈的,而不是像 C++ 那樣基於類的復製。閉包的威力,也讓我看到瞭函數在內存中是如何保持對外部作用域的引用的。最讓我驚喜的是,書中關於事件循環(Event Loop)的講解,清晰地描繪瞭宏任務和微任務的執行順序,讓我對異步編程的理解不再是憑感覺,而是有瞭堅實的基礎。即使是那些看似簡單的操作,比如變量的聲明和賦值,在書中被拆解分析後,也展現齣瞭有趣的細節。這種刨根問底式的講解方式,讓我不僅知其然,更知其所以然,為我後續更深入的學習和更復雜的項目開發打下瞭堅實的基礎。
評分優點:“著”,行為流暢。
評分還行。
評分還行。
評分還行。
評分缺點:小錯誤不少。
評分不錯
評分不錯
評分缺點:小錯誤不少。
評分缺點:小錯誤不少。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有