JavaScript高級程序設計(第4版)知識點總結

介紹

JavaScript高級程序設計 第四版,在第三版的基礎上添加了ES6相關的內容。如letconst關鍵字,Fetch API、工做者線程、模塊、Promise 等。適合具備必定編程經驗的 Web 應用開發人員閱讀。前端

image

下面介紹一下各章節的知識點。數據庫

第1章 JavaScript概述

這章節主要講解JavaScript歷史回顧,它是在1995年由網景公司的 Brendan Eich 工程師開發的 JavaScript 1.0,1997 年,JavaScript 1.1 做爲提案提交給 Ecma。TC39 完成了語言標準化 ECMA-262,即 ECMAScript 新的腳本語言標準。1998 年,ISO 和 IEC 也採納了 ECMAScript 標準。至此之後,ECMAScript就做爲 JavaScript 實現的標準。編程

JavaScript 實現包含 ECMAScriptDOMBOM 三部分。canvas

第2章 HTML中的JavaScript

這章節主要講述使用 <script> 標籤將 JavaScript 引入 HTML 中,也可使用 <noscript> 標籤用於瀏覽器不支持腳本或腳本支持被關閉的狀況,還有 deferasync 兩個屬性用於延遲腳本執行和無需等待其它腳本。跨域

第3章 語言基礎

這章節講述了JavaScript的語言基礎,任何語言的核心都是描述語言在最基本層面上如何工做,其中會涉及語法、操做符、數據類型及內置功能,在此基礎上才能構建複雜的解決方案。數組

第4章 變量、做用域與內存

這章節主要是講述JavaScript變量的兩種類型的值:原始值和引用值。在這其中原始值有6中Undefined/Null/Boolean/Number/String/Symbol和原始值的特色。變量的做用域決定了變量的生命週期。JavaScript也是使用垃圾回收的編程語言,不須要操心內存分配和回收。瀏覽器

第5章 基本引用類型

這章節介紹JavaScript中的對象稱爲引用值,全部引用類型都繼承自Object。講述了幾種引用類型的做用和 API,還有三種相較於原始值的包裝類型:Boolean/Number/String的介紹和特色。代碼開始執行時,全局上下文會存在GlobalMath 兩個內置對象。安全

第6章 集合引用類型

這章節介紹了幾種 ECMAScript 6 中新增的幾種引用類型:Map/WeakMap/Set/WeakSet。使用這些類型能夠簡化應用程序的編寫和內存管理的新功能。服務器

第7章 迭代器與生成器

ECMAScript 6 支持迭代模式並引入了迭代器和生成器兩種語言特性。迭代器是一個能夠由任意對象實現的接口,支持繼續獲取對象產出的每個值。任何實現 Iterable 接口的對象都有一個 Symbol.iterator 屬性,這個屬性引用默認迭代器。默認迭代器就像一個迭代器工廠,也就是一個函數,調用以後會產生一個實現 Iterator 接口的對象。生成器是一種特殊的函數,調用以後會返回一個生成器對象。生成器對象實現了 Iterable 接口,並支持 yield 關鍵字,這個關鍵字可以暫停執行生成器函數。cookie

第8章 對象、類與面向對象編程

本章節主要介紹對象的概念、Object類的建立工廠模式/構造函數模式/原型模式/對象迭代和JavaScript實現繼承的方式原型鏈/盜用構造函數/組合函數/原型式繼承/寄生式繼承/寄生式組合繼承,還介紹了 ECMAScript 6 中新增的類,其實就是基於原型機制的語法糖。但類的語法能夠很優雅地定義向後兼容的類,既能夠繼承內置類型,也能夠繼承自定義類型。類有效地跨越了對象實例、對象原型和對象類之間的鴻溝。

第9章 代理與反射

ECMAScript 6 新增的代理和反射爲開發者提供了攔截並向基本操做嵌入額外行爲的能力。代理儘管不支持向後兼容,但它是真實JavaScript對象的透明抽象層。能夠定義包含捕獲器的處理程序對象,而捕獲器能夠攔截絕大部分 JavaScript 的基本操做和方法。在這個捕獲器處理程序彙總,能夠修改任何基本操做的行爲,前提是聽從捕獲器不變式。而反射 API,則封裝了一整套與捕獲器攔截的操做相對的方法。能夠把反射 API 看做一套基本操做,這些操做是絕大部分 JavaScript 對象 API的基礎。

代理的應用場景:跟蹤屬性訪問、隱藏屬性、組織修改或刪除屬性、函數參數驗證、構造函數參數驗證、數據綁定、以及可觀察對象。

第10章 函數

函數是 JavaScript 編程中最有用的工具。在 ECMAScript 6 中更是新增了許多強大的語法特性。

  • 函數表達式與匿名函數。
  • ES6 新增的箭頭函數語法、擴展操做符,能夠實現函數定義和調用的徹底動態化。
  • JavaScript 引擎優化符合尾調用條件的函數,節省棧空間等等。

第11章 期約與異步函數

ECMAScript 6 及之後的幾個版本逐步加大了對異步編程機制的支持,新增的期約(Promise)和asyncawait關鍵字,實現了異步編程和定義異步函數的機制。

期約的主要功能是爲異步代碼提供清晰的抽象。能夠用期約表示異步執行的代碼塊,也能夠表示異步計算的值。在須要串行異步代碼時最爲突出。期約能夠被序列化、連鎖使用、複合、擴展和重組。異步函數能夠說是現代 JavaScript 中的最重要的工具之一。

第12章 BOM

BOM是指瀏覽器對象模型,用於表示瀏覽器窗口和頁面可見區域的。最要有 window/location/navigator/screen/history幾種表示窗口區域的對象。

第13章 客戶端檢測

客戶端檢測是 JavaScript 中爭議最多的話題之一。由於不一樣瀏覽器之間存在差別,因此常常須要根據瀏覽器的能力來編寫不一樣的代碼。客戶端檢測有很多方式,但下面兩種用的最多。

  • 能力檢測。又稱特性檢測,即在運行時檢測瀏覽器是否支持某種特性的檢測邏輯。
  • 用戶代理檢測。經過用戶代理字符串肯定使用的瀏覽器。
  • 軟硬件檢測。經過BOM中的一些對象獲取操做系統與硬件信息。

第14~16章 DOM

這三章主要講解DOM模型、DOM Level、節點層級及 Node 類型,和 Selectors API 用來根據 CSS 選擇符匹配 DOM 元素,DOM中的元素遍歷,和HTML 與 DOM 交互的核心 API,在HTML5中也提供了DOM擴展,DOM2 和 DOM3 是在 DOM1 的基礎上添加了更多的交互能力及更高級的XML特性。

第17章 事件

JavaScript 與 HTML 的交互是經過事件實現的,而事件中的事件流分爲事件冒泡和事件捕獲,DOM想要實現事件就須要與事件進行綁定,而事件綁定分爲HTML/DOM0/DOM2/IE幾種,而發生的事件主要有 UIEvent/FocusEvent/MouseEvent/WheelEvent/InputEvent/KeyboardEvent/CompositionEvent等幾種類型,還有一些類型這裏沒有列舉。可使用事件委託和事件移除來減小內存消耗和提供性能。事件是 JavaScript 中最重要的主題之一,理解事件的原理及其對性能的影響很是重要。

第18章 動畫與 Canvas 圖形

本章主要介紹前端繪圖和動畫的技術,主要是 HTML5 中的 <canvas> 元素提供了動態建立建立圖形的 API。這種主要是繪製 2D 圖形。而 3D 繪圖就需使用 WebGL 技術,它是對 OpenGL ES 2.0 的實現。

第19章 表單腳本

本章主要介紹了HTML 中 <form><select><option><input><textarea>等元素的使用和富文本編輯。

第20章 JavaScript API

本章主要介紹 JavaScript 中比較重要的幾種 API,如Atomics/SharedArrayBuffer/Encoding API/File API/Blob API/<audio>/<video>/Notifications API/Page Visibility等幾種較爲重要的API。

第21章 錯誤處理與調試

本章介紹了JavaScript中使用 try/catchthrow 語句來處理瀏覽器錯誤和一些錯誤類型,主流瀏覽器也提供了向用戶報告錯誤的機制。

第22~23章 XML/JSON

這兩章主要介紹了JavaScript處理XML和JSON兩種數據格式,而如今使用較多的是JSON格式,由於它是輕量級的、能夠較方便地表示覆雜數據結構。在ECMAScript 5中定義了原生 JSON 對象,用於將JavaScript對象序列化爲 JSON 字符串,以及將JSON數組解析爲JavaScript對象。而DOM2中爲XML實現了兩個類型:

  • DOMParser 類型將 XML 字符串解析爲 DOM 文檔。
  • XMLSerializer 類型執行相反操做,將 DOM 文檔序列化爲 XML 字符串。

DOM3 新增了 XPath API 的規範,可讓JavaScript針對DOM文檔執行任何XPath查詢並獲得不一樣數據類型的結果。

第24章 網絡請求與遠程調用

本章介紹了Ajax技術和實現Ajax的XMLHttpRequest對象,這個對象最先由微軟發明並在IE5中引入。以後其他瀏覽器都復刻了該技術。W3C也在以後將XMLHttpRequest加入Web標準。其中也講述了進度事件。

XMLHttpRequest主要限制是同源策略,訪問超出限制以外的資源會致使安全錯誤,觸發使用正式跨域方案CORS,XMLHttpRequest原生支持CORS。圖片探測和JSONP是另兩種跨域通訊技術,但沒有CORS可靠。

Fetch API 是做爲對 XMLHttpRequest對象的一種端到端的替代方案而提出的。這個 API 提供了優秀的基於期約的結構、更直接的接口,以及對Stream API 的最好支持。

還有 Web Socket、與服務器全雙工、雙向通訊。但須要專用的服務器,速度優點明顯。

第25章 客戶端存儲

本章主要講述了將數據保存在客戶的機器上的存儲方式,主要有cookie/Web Storage/IndexedDB

Web Storage定義了sessionStorage/localStorage兩個對象存儲數據。而IndexedDB是相似SQL數據庫結構的數據化數據存儲機制,但IndexedDB存儲的是對象,能夠定義鍵來添加數據,而索引針對特定屬性實現更快查詢。但由於這些數據沒加密,所以要注意別存儲敏感信息。

第26章 模塊

本章介紹了模塊模式,它是管理複雜性的永恆工具。分爲ES6以前的模塊模式和ES6以後的模塊模式,在ES6以前,CommonJS和AMD兩種實現模塊的方式,但它們編寫的代碼會在不少方面不一致,常常會帶有冗餘的樣板代碼。而ES6以後從新定義了瀏覽器模塊,集兩個系統之長於一身,並經過更簡單的聲明性語法暴露出來。

第27章 工做者線程

本章介紹工做者線程的概念和實現,而工做者線程主要分爲:專用工做者線程、共享工做者線程和服務工做者線程。現代瀏覽器都支持它們。它們很是適合複雜計算和數據處理,特別是須要花較長時間於是會影響用戶使用網頁的處理任務。

第28章 最佳實踐

本章主要介紹一些編碼習慣、鬆散耦合和編碼慣例來保證JavaScript代碼的可維護性,一些能夠提升性能的方式還有部署:構建的過程、驗證、壓縮。

如想獲取本資源請按如下步驟操做:

  1. 識別二維碼並關注公衆號 「海人的博客」
  2. 在公衆號後臺回覆關鍵字 「7913」

image

相關文章
相關標籤/搜索