前言:
為什么會想到把《JavaScript 高級程序設計(第 3 版)》總結記錄呢,之前寫過一篇博客,研究的輪播效果,后來又去看了《JavaScript 高級程序設計(第3版)》,突然想着邊看邊記錄,就像邊看邊寫讀后感。這本書從介紹表達式和申明變量開始,平滑的過渡到了閉包、面向對象開發等高級主題。與那些把大量篇幅花在講解背景知識上的書,以及那些讓人感覺好像要使用JavaScript 開發導彈制導系統的書,這本書讓人感覺細致周到、親切自然,這是一本寫給“普通人”的書。它能夠讓你編寫出引以為榮的代碼。構建出令人叫絕的網站。JavaScript 是一種非常松散的面向對象語言,也是 Web 開發中極受歡迎的一門語言。它是一種全新的動態語言,植根於全球數億網民都在使用的 Web 瀏覽器之中,致力於增強網站和 Web 應用程序的交互性。
本書目錄:
1:JavaScript 簡介
2:在HTML中使用 JavaScript
3:基本概念
4:變量、作用域和內存問題
5:引用類型
6:面向對象的程序設計
7:函數表達式
8:BOM
9:客戶端檢測
10:DOM
11:DOM 擴展
12:DOM2 和 DOM3
13:事件
14:表單腳本
15:使用 Canvas 繪圖
16:HTML5 腳本編程
17:錯誤處理與調試
18:JavaScript 與 XML
19:E4X
20:JSON
21:Ajax 與 Comet
22:高級技巧
23:離線應用與客戶端存儲
24:最佳實踐
25:新興的 API
好了,話不多說,開始我的第一章 Read。
本章主要內容:
JavaScript 是什么、JavaScript 與 ECMAScript 的關系、JavaScript 的不同版本
第一個問題:JavaScript 是什么?
JavaScript 誕生於 1995 年。當時它的主要目的是處理以前有服務器端語言(如 Prel)負責的一些輸入驗證操作。在 JavaScript 問世之前,必須把表單數據發送到服務器端才能確定用戶是否沒有填寫某個必填域,是否輸入了無效的值。Netscape Navigator 希望通過 JavaScript 來解決這個問題。如今 JavaScript 的用途早已不再局限簡單的數據驗證,而是具備了與瀏覽器窗口及其內容等幾乎所有方面交互的能力。現在的 JavaScript 已經成為一門功能全面的編程語言,能夠處理復雜的計算和交互,擁有了閉包、匿名(lamda,拉姆達)函數,甚至元編程等特性。
第二個問題:JavaScript與ECMAScript的關系?
1997年,以 JavaScrip 1.1 為藍本的建議被提交給了歐洲計算機制造商協會(ECMA,European Computer Manufactures Association)。該協會指定 39 號技術委員會(TC39,Technical Committee #39)負責“標准化一種通用、跨平台、供應商中立的腳本語言的語法和語義”(http://www.ecmainternational.org/memento/TC39.htm)。TC39 由來自Netscape、sun、微軟、Borland 及其他關注腳本語言發展的公司的程序員組成,他們經過數月的努力完成了 ECMA-262 ——定義一種名為 ECMAScript(發音為“ek-ma-script”) 的新腳本語言的標准。
一個完整的 JavaScript 實現應該由以下三大類組成(如圖1-1):
1:核心(ECMAScript)
2:文檔對象模型(DOM)
3:瀏覽器對象模型(BOM)
1.1 文檔對象模型(DOM,Document Object Mode)是針對 XML 但經過擴展用於 HTML 的應用程序編程接口(API,Application Programming Interface)。DOM 把整個頁面映射為一個多層次節點結構。HTML 或 XML 頁面中的每個組成部分都是某種類型的節點,這些節點又包含着不同類型的數據。下面舉一個簡單的例子:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<p>hello World !</p>
</body>
</html>
在 DOM 中,這個頁面可以通過下圖 1-2 所示的分層節點圖表示。
通過 DOM 創建的這個表示文檔的樹形圖,因此開發人員可以很方便的刪除、添加、替換、修改任何節點。
1):為什么要使用 DOM?
答:對 Netscape 和微軟加以控制;
避免 Web 開發領域出現技術上兩強割據;
保持 Web 跨平台的天性;
解決瀏覽器不兼容問題。
2):DOM 級別
DOM 1級(DOM Level 1)
兩個模塊:DOM 核心(DOM Core)和DOM HTML
DOM 2級
新增四個模塊:· DOM 視圖(DOM Views)
· DOM 事件(DOM Events)
· DOM 樣式(DOM Style)
· DOM 遍歷和范圍 (DOM Traversal and Range)
DOM 3級
新增驗證文檔方法:· DOM驗證(DOM Validation)
注:
1:DOM 並不只是針對 JavaScript,很多其他語言也實現了 DOM;
2:不存在 DOM 0 級標准,DOM 0 級只是 DOM 歷史坐標中的一個參照點而已。具體來說指的是 Internet Explore 4.0和Netscape Navigator 4.0 最初支持的 DHTML。
3):其他 DOM 標准
(1) SVG(Scalable Vector Graphic,可伸縮矢量圖)1.0;
(2) MathML(Mathenatical Markup Language,數學標記語言)1.0;
(3) SMIL(Synchronized Multimedia Integration Language,同步多媒體集成語言)。
這些語言都是基於 XML 的,還有一些語言也開發了自己的 DOM 實現,例如 Mozilla 的 XUL(XML User Interface Language,XML 用戶界面語言)。但只有上面列出的幾種語言是 W3C 的推薦標准。
4):Web瀏覽器對 DOM 的支持
1.2 瀏覽器對象模型(DOM)
Internet Explorer 3 和 Netscape Navigator 3 的共同特色就是支持可以訪問和操作瀏覽器窗口的瀏覽器對象模型(BOM,Browser Object Model)。開發人員使用BOM可以控制瀏覽器顯示的頁面以外的部分。
從根本上講,BOM 只處理瀏覽器窗口和框架,但人們習慣上也把所有針對瀏覽器的 JavaScript 擴展算作 BOM 的一部分。具體擴展如下:
(1):彈出新瀏覽器窗口的功能;
(2):移動、縮放和關閉瀏覽器窗口的功能;
(3):提供瀏覽器詳細信息的 navigator 對象;
(4):提供瀏覽器所加載頁面的詳細信息的 lacation 對象;
(5):提供用戶顯示器分辨率詳細信息的 screen 對象;
(6):對 cookies 的支持;
(7):像 XMLHttpRequest 和 IE 的 ActiveXObject 這樣的自定義對象。
1.3 JavaScript 版本
注:
大多數瀏覽器在提及對 JavaScript 的支持情況時,一般都以 ECMAScript 兼容性和對 DOM 的支持情況為准。
1.4 小結
JavaScript 是一種專為網頁交互而設計的腳本語言,由一下三個不同部分組成:
A:ECMAScript ,由ECMA - 262定義,提供核心語言功能;
B:文檔對象模型(DOM),提供訪問和操作網頁內容的方法和接口;
C:瀏覽器對象模型(BOM),提供與瀏覽器交互的方法和接口。
如果文中有錯誤,非常感謝您指出,但請不要刻薄詆毀。
文章我會盡量添加一些實用的例子,方便理解閱讀。
本文屬於連載性隨時更新文章。
個人屬於中級程序媛,現於成都某公司任職Web前端開發,希望通過自己的學習然后鞏固提升我的技術,大神勿噴,謝謝 /haha