發表於2024-12-16
JavaScript程序設計(第3版) 鋒利的jQuery(第2版) 鋒利的jQuery(第2版) pdf epub mobi txt 電子書 下載
1995年,Brendan Eich創造瞭。
2005年,席捲的“Ajax熱”激發瞭全世界Web開發人員學習的熱情。與此同時,本書第1版誕生。這一版的中文版狂銷4萬冊,被譽為“深度的經典”。
2005年到2009年,前端開發社區在實踐中充分檢驗瞭這門語言的各種實現和擴展,從被戲謔的“玩具語言”一躍成為軟件業舉足輕重的通用編程語言。2009年1月本書第2版應運而生,凝聚作者和社區專傢多年寶貴經驗的這一技術名著再次得到讀者認可和褒揚,中文版銷量達到2萬冊。
2009年到2011年,ECMAScript5和HTML5在標準之爭中雙雙勝齣,使大量專有實現和客戶端擴展正式進入規範,同時也為這門語言增添瞭很多適應未來發展的新特性。2012年初本書第3版麵世,中文版也緊隨其後。第3版除增加5章全新內容外,其他章節也有較大幅度的增補和修訂,新內容篇幅約占三分之一。
作為技術經典名著,《程序設計(第3版)》承繼瞭之前版本全麵深入、貼近實戰的特點,在詳細講解瞭語言的核心之後,條分縷析地為讀者展示瞭現有規範及實現為開發Web應用提供的各種支持和特性。
《程序設計(第3版)》主要內容包括:
對實現各個組成部分的詳盡解讀;
對麵嚮對象編程的全方位闡述;
對DOM、BOM及瀏覽器事件模型的透徹剖析;
Web應用基本數據格式JSON、XML及其存取;
Ajax、Comet服務器端通信和基於File API的拖放式文件上傳;
HTML5涵蓋的錶單、媒體、Canvas(包括WebGL);
離綫應用及客戶端存儲(包括IndexedDB);
新興API及ECMAScript Harmony展望。
作為技術經典名著,《程序設計(第3版)》承繼瞭之前版本全麵深入、貼近實戰的特點,在詳細講解瞭語言的核心之後,條分縷析地為讀者展示瞭現有規範及實現為開發Web應用提供的各種支持和特性。
《程序設計(第3版)》主要內容包括:
對實現各個組成部分的詳盡解讀;
對麵嚮對象編程的全方位闡述;
對DOM、BOM及瀏覽器事件模型的透徹剖析;
Web應用基本數據格式JSON、XML及其存取;
Ajax、Comet服務器端通信和基於File API的拖放式文件上傳;
ECMAScript 5定義的新核心語言特性;
HTML5涵蓋的錶單、媒體、Canvas(包括WebGL);
Selectors、Web? Workers、地理定位及跨文檔傳遞消息等新API;
離綫應用及客戶端存儲(包括IndexedDB);
維護、性能、部署相關的開發實踐;
新興API及ECMAScript Harmony展望。
《程序設計(第3版)》適閤有一定編程經驗的Web應用開發人員閱讀,也可作為高校及社會實用技術培訓相關課程的教材。
Nicholas C. Zakas(尼古拉斯·澤卡斯),Web技術專傢,現為雅虎公司界麵呈現架構師,負責My Yahoo!和雅虎首頁等大訪問量站點的設計。尼古拉斯擁有豐富的Web開發和界麵設計經驗,曾經參與許多大公司的Web解決方案開發。他還是High Performance 一書的作者,並與他人閤作撰寫瞭Professional Ajax和Even Faster Web Sites。尼古拉斯擁有梅裏馬剋學院計算機科學學士學位和埃迪柯特學院的MBA學位。他的Twitter彆名是@slicknet。
目 錄
第1章 簡介 1
1.1 簡史 1
1.2 實現 2
1.2.1 ECMAScript 3
1.2.2 文檔對象模型(DOM) 5
1.2.3 瀏覽器對象模型(BOM) 8
1.3 版本 8
1.4 小結 9
第2章 在HTML中使用 10
2.1
簡介
本章內容
曆史迴顧
是什麼
與ECMAScript的關係
的不同版本
誕生於1995年。當時,它的主要目的是處理以前由服務器端語言(如Perl)負責的一些輸入驗證操作。在問世之前,必須把錶單數據發送到服務器端纔能確定用戶是否沒有填寫某個必填域,是否輸入瞭無效的值。Netscape Navigator希望通過來解決這個問題。在人們普遍使用電話拔號上網的年代,能夠在客戶端完成一些基本的驗證任務是令人興奮的。畢竟,撥號上網的速度之慢,導緻瞭與服務器的每一次數據交換事實上都成瞭對人們耐心的一次考驗。
自此以後,逐漸成為市麵上常見瀏覽器的一項特色功能。如今,的用途早已不再局限於簡單的數據驗證,而是具備瞭與瀏覽器窗口及其內容等幾乎所有方麵交互的能力。的已經成為一門功能全麵的編程語言,能夠處理復雜的計算和交互,擁有瞭閉包、匿名(lamda,拉姆達)函數,甚至元編程等特性。作為Web的一個重要組成部分,的重要性是不言而喻的,就連手機瀏覽器,甚至那些專為殘障人士設計的瀏覽器等非常規瀏覽器都支持它。當然,微軟的例子更為典型。雖然有自己的客戶端腳本語言VBScript,但微軟仍然在Internet Explorer的早期版本中加入瞭自己的實現 。
從一個簡單的輸入驗證器發展成為一門強大的編程語言,完全齣乎人們的意料。應該說,它既是一門非常簡單的語言,又是一門非常復雜的語言。說它簡單,是因為學會使用它隻需片刻功夫;而說它復雜,是因為要真正掌握它則需要數年時間。要想全麵理解和掌握,關鍵在於弄清楚它的本質、曆史和局限性。
1.1 簡史
在Web日益流行的同時,人們對客戶端腳本語言的需求也越來越強烈。那個時候,絕大多數因特網用戶都使用速度僅為28.8kbit/s的“貓”(調製解調器)上網,但網頁的大小和復雜性卻不斷增加。為完成簡單的錶單驗證而頻繁地與服務器交換數據隻會加重用戶的負擔。想象一下:用戶填寫完一個錶單,單擊“提交”按鈕,然後等待30秒鍾,終服務器返迴消息說有一個必填字段沒有填好……當時走在技術革新前沿的Netscape公司,決定著手開發一種客戶端語言,用來處理這種簡單的驗證。
當時就職於Netscape公司的布蘭登艾奇(Brendan Eich),開始著手為計劃於1995年2月發布的Netscape Navigator 2開發一種名為LiveScript的腳本語言——該語言將同時在瀏覽器和服務器中使用(它在服務器上的名字叫LiveWire)。為瞭趕在發布日期前完成LiveScript的開發,Netscape與Sun公司建立瞭一個開發聯盟。在Netscape Navigator 2正式發布前夕,Netscape為瞭搭上媒體熱炒Java的順風車,臨時把LiveScript改名為。
由於 1.0獲得瞭巨大成功,Netscape隨即在Netscape Navigator 3中又發布瞭 1.1。Web雖然羽翼未豐,但用戶關注度卻屢創新高。在這樣的背景下,Netscape把自己定位為市場型公司。與此同時,微軟決定嚮與Navigator競爭的自傢産品Internet Explorer瀏覽器投入更多資源。Netscape Navigator 3發布後不久,微軟就在其Internet Explorer 3中加入瞭名為JScript的實現(命名為JScript是為瞭避開與Netscape有關的授權問題)。以現在的眼光來看,微軟1996年8月為進入Web瀏覽器領域而實施的這個重大舉措,是導緻Netscape日後濛羞的一個標誌性事件。然而,這個重大舉措同時也標誌著作為一門語言,其開發嚮前邁進瞭一大步。
微軟推齣其實現意味著有瞭3個不同的版本:Netscape Navigator中的、Internet Explorer中的Jscript和ScriptEase中的CEnvi。與C及其他編程語言不同,當時還沒有標準規定的語法和特性,3個不同版本並存的局麵已經完全暴露瞭這個問題。隨著業界擔心的日益加劇,的標準化問題被提上瞭議事日程。
1997年,以 1.1為藍本的建議被提交給瞭歐洲計算機製造商協會(Ecma,European Computer Manufacturers Association)。該協會指定39號技術委員會(TC39,Technical Committee #39)負責“標準化一種通用、跨平颱、供應商中立的腳本語言的語法和語義”(http://www.ecma international.org/memento/TC39.htm)。TC39由來自Netscape、Sun、微軟、Borland及其他關注腳本語言發展的公司的程序員組成,他們經過數月的努力完成瞭ECMA-262——定義一種名為ECMAScript(發音為“ek-ma-script”)的新腳本語言的標準。
第二年,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission,國標標準化組織和電工委員會)也采用瞭ECMAScript作為標準(即ISO/IEC-16262)。自此以後,瀏覽器開發商就開始緻力於將ECMAScript作為各自實現的基礎,也在不同程度上取得瞭成功。
1.2 實現
雖然和ECMAScript通常都被人們用來錶達相同的含義,但的含義卻比ECMA-262中規定的要多得多。沒錯,一個完整的實現應該由下列三個不同的部分組成(見圖1-1)。
核心(ECMAScript)
文檔對象模型(DOM)
瀏覽器對象模型(BOM)
1.2.1 ECMAScript
由ECMA-262定義的ECMAScript與Web瀏覽器沒有依賴關係。實際上,這門語言本身並不包含輸入和輸齣定義。ECMA-262定義的隻是這門語言的基礎,而在此基礎之上可以構建更完善的腳本語言。我們常見的Web瀏覽器隻是ECMAScript實現可能的宿主環境之一。宿主環境不僅提供基本的ECMAScript實現,同時也會提供該語言的擴展,以便語言與環境之間對接交互。而這些擴展——如DOM,則利用ECMAScript的核心類型和語法提供更多更具體的功能,以便實現針對環境的操作。前麵介紹過的Node以及眾所周知的Adobe Flash也都是宿主環境。
既然ECMA-262標準沒有參照Web瀏覽器,那它都規定瞭些什麼內容呢?大緻說來,它規定瞭這門語言的下列組成部分:
語法
類型
語句
關鍵字
保留字
操作符
對象
ECMAScript就是對實現該標準規定的各個方麵內容的語言的描述。實現瞭ECMAScript,Adobe ActionScript同樣也實現瞭ECMAScript。
1. ECMAScript的版本
ECMAScript的不同版本又稱為版次,以第x版錶示(意即描述特定實現的ECMA-262規範的第x個版本)。ECMA-262的近一版是第5版,發布於2009年。而ECMA-262的第1版本質上與Netscape的 1.1相同——隻不過刪除瞭所有針對瀏覽器的代碼並作瞭一些較小的改動:ECMA-262要求支持Unicode標準(從而支持多語言開發),而且對象也變成瞭平颱無關的(Netscape 1.1的對象在不同平颱中的實現不一樣,例如Date對象)。這也是 1.1和1.2與ECMA-262第1版不一緻的主要原因。
ECMA-262第2版主要是編輯加工的結果。這一版中內容的更新是為瞭與ISO/IEC-16262保持嚴格一緻,沒有作任何新增、修改或刪節處理。因此,一般不使用第2版來衡量ECMAScript實現的兼容性。
ECMA-262第3版纔是對該標準次真正的修改。修改的內容涉及字符串處理、定義和數值輸齣。這一版還新增瞭對正則錶達式、新控製語句、try-catch異常處理的支持,並圍繞標準的化做齣瞭一些小的修改。從各方麵綜閤來看,第3版標誌著ECMAScript成為瞭一門真正的編程語言。
ECMA-262第4版對這門語言進行瞭一次全麵的檢核修訂。由於在Web上日益流行,開發人員紛紛建議修訂ECMAScript,以使其能夠滿足不斷增長的Web開發需求。作為迴應,ECMA TC39重新召集相關人員共同謀劃這門語言的未來。結果,齣颱後的標準幾乎在第3版基礎上完全定義瞭一門新語言。第4版不僅包含瞭強類型變量、新語句和新數據結構、真正的類和經典繼承,還定義瞭與數據交互的新方式。
與此同時,TC39下屬的一個小組也提齣瞭一個名為ECMAScript 3.1的替代性建議,該建議隻對這門語言進行瞭較少的改進。這個小組認為第4版給這門語言帶來的跨越太大瞭。因此,該小組建議對這門語言進行小幅修訂,能夠在現有引擎基礎上實現。終,ES3.1附屬委員會獲得的支持超過瞭TC39,ECMAS-262第4版在正式發布前被放棄。
ECMAScript 3.1成為ECMA-262第5版,並於2009年12月3日正式發布。第5版力求澄清第3版中已知的歧義並增添瞭新的功能。新功能包括原生JSON對象(用於解析和序列化JSON數據)、繼承的方法和屬性定義,另外還包含一種嚴格模式,對ECMAScript引擎解釋和執行代碼進行瞭補充說明。
2. 什麼是ECMAScript兼容
ECMA-262給齣瞭ECMAScript兼容的定義。要想成為ECMAScript的實現,則該實現必須做到:
支持ECMA-262描述的所有“類型、值、對象、屬性、函數以及程序句法和語義”(ECMA-262第1頁);
支持Unicode字符標準。
此外,兼容的實現還可以進行下列擴展。
添加ECMA-262沒有描述的“更多類型、值、對象、屬性和函數”。ECMA-262所說的這些新增特性,主要是指該標準中沒有規定的新對象和對象的新屬性。
支持ECMA-262沒有定義的“程序和正則錶達式語法”。(也就是說,可以修改和擴展內置的正則錶達式語法。)
上述要求為兼容實現的開發人員基於ECMAScript開發一門新語言提供瞭廣闊的空間和極大的靈活性,這也從另一個側麵說明瞭ECMAScript受開發人員歡迎的原因。
3. Web瀏覽器對ECMAScript的支持
1996年,Netscape Navigator 3捆綁發布瞭 1.1。而相同的 1.1設計規範隨後作為對新標準(ECMA-262)的建議被提交給Ecma。伴隨著的迅速走紅,Netscape豪情滿懷地著手開發 1.2。然而,問題是Ecma當時還沒有接受Netscape的建議。
Netscape Navigator 3發布後不久,微軟也推齣瞭Internet Explorer 3。微軟在IE的這一版中捆綁瞭JScript 1.0,很多人都認為JScript 1.0與 1.1應該是一樣的。但是,由於沒有文檔依據,加之不適當的特性模仿,JScript 1.0還是很難與 1.1相提並論。
1997年,內置 1.2的Netscape Navigator 4發布;而到這一年年底,ECMA-262第1版也被接受並實現瞭標準化。結果,雖然ECMAScript被認為是基於 1.1製定的,但 1.2與ECMAScript的第1版並不兼容。
JScript的升級版是Internet Explorer 4中內置的JScript 3.0(隨同微軟IIS 3.0發布的JScript 2.0從來也沒有移植到瀏覽器中)。微軟通過媒體大肆宣傳JScript 3.0是世界上個ECMA兼容的腳本語言,但當時的ECMA-262尚未定稿。於是,JScript 3.0與 1.2都遭遇瞭相同的尷尬局麵——誰都沒有按照終的ECMAScript標準來實現。
Netscape決定更新其實現,即在Netscape Navigator 4.06中發布 1.3,從而做到瞭與ECMA-262的個版本完全兼容。在 1.3中,Netscape增加瞭對Unicode標準的支持,並在保留 1.2新增特性的同時實現瞭所有對象的平颱中立化。
在Netscape以Mozilla項目的名義開放其源代碼時,預期 1.4將隨同Netscape Navigator 5一道發布。然而,一個激進的決定,徹底重新設計Netscape代碼,打亂瞭原有計劃。後來, 1.4隻發布瞭針對Netscape Enterprise Server的服務器版,而沒有內置於Web瀏覽器中。
到瞭2008年,五大主流Web瀏覽器(IE、Firefox、Safari、Chrome和Opera)全部做到瞭與ECMA-262兼容。IE8是個著手實現ECMA-262第5版的瀏覽器,並在IE9中提供瞭完整的支持。Firefox 4也緊隨其後做到兼容。下錶列齣瞭ECMAScript受主流Web瀏覽器支持的情況。
瀏 覽 器 ECMAScript兼容性 瀏 覽 器 ECMAScript兼容性
JavaScript程序設計(第3版) 鋒利的jQuery(第2版) 鋒利的jQuery(第2版) pdf epub mobi txt 電子書 下載