David Flanagan:javascript——the Definitive Guide@2011 (第6版)
JavaScript 是一門程式語言,在網頁開發領域佔據核心地位,與 HTML(負責網頁內容結構)、CSS(負責網頁視覺呈現)共同構成現代網頁開發的基礎三劍客。JavaScript 是一種高階、動態、非類型(untyped)的直譯式語言,它融合了多種語言的特性:其語法結構源自 Java,一級函式(first-class functions)的觀念來自 Scheme,而原型繼承(prototype-based inheritance)則受到 Self 的啟發。雖然 JavaScript 早期被稱為「網頁腳本語言」,但隨著時間演進,它已經發展成為一種功能強大且效率優異的通用型語言。
在討論 JavaScript 的技術細節之前,了解其命名和版本歷史是有益的。「JavaScript」最初是 Netscape 公司開發的產品名稱。由於商標問題,這門語言的標準化版本被命名為「ECMAScript」,而 Microsoft 的實作版本則稱為「JScript」。儘管名稱各異,實際上絕大多數開發者都習慣稱其為 JavaScript。此書遵循業界慣例,僅在提及語言標準時使用「ECMAScript」。過去十多年來,瀏覽器普遍實作的是 ECMAScript 版本 3 (ES3)。近期,ECMAScript 版本 5 (ES5) 被正式定義並開始受到瀏覽器的支援。本書全面涵蓋了 ES3 的既有特性及 ES5 的新功能。此外,書中也可能偶爾提及 Mozilla 特定版本號(如 JavaScript 1.5 或 1.8)或特定 JavaScript 引擎的名稱(如 Google 的 V8)。
為了使程式語言具有實用性,必須具備標準函式庫或 API 來執行基本輸入/輸出操作。核心 JavaScript 語言定義了處理文字、陣列、日期和正規表達式的基本 API,但不包含任何輸入/輸出功能。這些進階功能(如網路、儲存、圖形)是「宿主環境」(host environment)的責任,通常這個環境就是網頁瀏覽器(即所謂的「客戶端 JavaScript」),但 JavaScript 也可嵌入於其他環境(如伺服器端)。本書架構嚴謹,分為四個主要部分:
第一部分:核心 JavaScript
此部分深入探討 JavaScript 語言本身及其內建的基礎 API。內容循序漸進,從語言的最低層級開始介紹:
* 語彙結構(Lexical Structure):解釋 JavaScript 程式碼的基礎規則,如字元集、註解方式、識別字(變數名、函式名)規範、保留字以及選擇性分號的使用。
* 類型、值與變數(Types, Values, and Variables):闡述 JavaScript 支援的各種類型(數字、字串、布林值、null、undefined)及其特性,包括全域物件(Global Object)、包裝物件(Wrapper Objects)、可變與不可變值(mutable vs immutable)、類型轉換(type conversions)以及變數的宣告與作用域(scope)。
* 運算式與運算子(Expressions and Operators):介紹 JavaScript 中用於產生值的各種運算式和運算子,涵蓋基本運算式、物件和陣列初始化、函式定義、屬性存取、函式呼叫、物件建立、以及各類型的運算子(算術、關係、邏輯、賦值等)。
* 陳述式(Statements):說明構成 JavaScript 程式指令的陳述式,包括表達式陳述式、複合與空陳述式、宣告陳述式(var, function)、條件陳述式(if, switch)、迴圈陳述式(while, do/while, for, for/in)及跳躍陳述式(break, continue, return, throw, try/catch/finally)。
* 物件(Objects):詳細介紹 JavaScript 的核心資料類型——物件。包括物件的建立方式、屬性的查詢、設定、刪除與枚舉、屬性取值與設定函式(getters and setters)、屬性特性(attributes)及物件特性、物件序列化(serializing)以及物件方法(methods)。
* 陣列(Arrays):介紹 JavaScript 的陣列類型,它是一種特殊的數值索引物件。包括陣列的建立、元素的讀寫、稀疏陣列(sparse arrays)、length 屬性、添加和刪除元素、遍歷陣列以及 ECMAScript 5 新增的陣列方法。
* 函式(Functions):深入探討 JavaScript 函式的定義、呼叫方式、參數處理、函式作為值的使用、作用域與閉包(Closures)、函式屬性、方法與建構子(Constructors)以及函式式程式設計(Functional Programming)技術。
* 類別與模組(Classes and Modules):解釋 JavaScript 的物件導向程式設計模式,包括基於原型(prototype-based)的類別概念、建構子函式、類別的擴展與繼承(subclassing)、物件導向技術實踐及模組化程式設計。
* 使用正規表達式的模式匹配(Pattern Matching with Regular Expressions):介紹正規表達式(Regular Expressions)的語法,以及如何使用 RegExp 物件和字串方法進行文字模式匹配與搜尋替換。
* JavaScript 子集與擴充(JavaScript Subsets and Extensions):討論基於安全考量定義的語言子集,以及 Mozilla 等實作版本在 ECMAScript 標準之外提供的語言擴充功能。
* 伺服器端 JavaScript(Server-Side JavaScript):簡要介紹 JavaScript 在非瀏覽器環境下的使用,特別是 Rhino(基於 Java)和 Node(基於 V8)這兩種常見的伺服器端 JavaScript 環境。
第二部分:客戶端 JavaScript
此部分聚焦於 JavaScript 在網頁瀏覽器中的應用,涵蓋 HTML5 及相關標準定義的瀏覽器端 API。
* 網頁瀏覽器中的 JavaScript(JavaScript in Web Browsers):介紹客戶端 JavaScript 的環境特性、如何將 JavaScript 嵌入 HTML 檔案、程式碼執行模型(同步腳本、事件驅動)、相容性與互通性問題、可及性(Accessibility)和安全性限制,以及客戶端框架(如 jQuery)。
* Window 物件(The Window Object):介紹瀏覽器視窗或框架的全域物件,包括定時器(Timers)、瀏覽器位置與導航(Location and Navigation)、瀏覽歷史(History)、瀏覽器和螢幕資訊、對話框、錯誤處理、文件元素作為 Window 屬性以及多視窗和框架的處理。
* 文件腳本(Scripting Documents):介紹 Document 物件及其相關的 DOM API,包括 DOM 概觀、元素選擇(依 ID、名稱、標籤、類別、CSS 選擇器)、文件結構與遍歷、屬性操作、元素內容操作、節點建立、插入和刪除以及處理 HTML 表單。
* CSS 腳本(Scripting CSS):說明如何使用 JavaScript 操作 CSS 樣式,包括 CSS 概觀、重要 CSS 屬性、內嵌樣式腳本、計算樣式查詢、CSS 類別腳本以及樣式表腳本。
* 事件處理(Handling Events):介紹 JavaScript 的事件驅動程式設計模型,包括事件類型、事件處理器註冊方式、事件處理器呼叫機制、事件傳播、預設行為取消以及處理特定事件類型(如滑鼠、鍵盤、表單、載入事件)。
* HTTP 腳本(Scripted HTTP):介紹使用 XMLHttpRequest 物件進行非同步 HTTP 請求(Ajax),以及 JSONP 和 Server-Sent Events(Comet)等技術。
* jQuery 函式庫(The jQuery Library):介紹最流行的客戶端 JavaScript 函式庫,包括其核心概念(選擇器、jQuery 物件)、屬性與樣式操作、文件結構修改、事件處理、動畫效果、Ajax 工具、公用函式、選擇器語法及擴充機制。
* 客戶端儲存(Client-Side Storage):介紹在使用者瀏覽器中儲存資料的機制,包括 Web Storage(localStorage 和 sessionStorage)、Cookies 和 IE 的 userData 持久化,以及離線網頁應用程式(Application Cache)。
* 腳本化媒體與圖形(Scripted Media and Graphics):介紹使用 JavaScript 操作媒體元素(Image、Audio、Video)和繪製圖形(SVG、Canvas)。
* HTML5 API:介紹 HTML5 及相關標準中定義的其他新的 Web 應用程式 API,如地理定位(Geolocation)、瀏覽歷史管理、跨文件訊息傳遞(Cross-Origin Messaging)、Web Workers(背景執行緒)、Typed Arrays 和 ArrayBuffers、Blobs、文件系統 API 和 Web Sockets。
第三部分:核心 JavaScript 參考
此部分為核心 JavaScript 語言及其內建 API 的詳細參考手冊。
第四部分:客戶端 JavaScript 參考
此部分為客戶端 JavaScript API 的詳細參考手冊,涵蓋瀏覽器環境提供的各種物件、方法和屬性。
總而言之,本書旨在為有程式設計經驗的讀者提供一份全面且權威的 JavaScript 語言與 Web 平台參考指南。從語言的基礎語法到高階的物件導向特性、從基本的 DOM 操作到先進的 HTML5 API,內容廣泛且深入,特別強調 ECMAScript 5 和 HTML5 的新功能以及客戶端開發中常見的跨瀏覽器相容性問題和最佳實踐。第六版對內容進行了大幅重寫和更新,以符合當前主流的開發風格和技術標準。作者也特別呼籲讀者若覺得本書有價值,請購買正版以支持作者持續寫作。
comments
comments for this post are closed