JavaScript——歷史與簡介


上一篇博文距離現在已經四個月了,一直想寫些什么無奈工作比較忙碌。我的恩師老王在畢業聚餐那天帶着一聲酒氣告訴我一定要把博客堅持寫下去,所以今天下決心要開始這個新的篇章。

之所以想要從頭寫一個關於JavaScript的系列是由於以下幾個原因:

1.JavaScript是Web程序員的核心技術

2.很多人會使用JQuery寫不錯的特效卻對JS中的繼承、原型了解不多,本文旨在讓本菜和大家一起提升“內力”,畢竟內力深厚了將來的武功造詣才會高

3.本菜在寫博文的同時會不斷的學習JS中不了解的東西,與大家一同成長

廢話到此為止,首先介紹幾位JS鼻祖:

 

布蘭登·艾奇(Brendan Eich,1961年~),JavaScript之父


Douglas Crockford ,JavaScript一代宗師

John Resig ,JQuery創始人

 

JavaScript歷史:

  JavaScript誕生於1995年。起初它的主要目的是處理以前由服務器端負責的一些表單驗證。在那個絕大多數用戶都在使用調制解調器上網的時代,用戶填寫完一個表單點擊提交,需要等待幾十秒,完了服務器反饋給你說某個地方填錯了......在當時如果能在客戶端完成一些基本的驗證絕對是令人興奮的。當時走在技術革新最前沿的Netscape(網景)公司,決定着手開發一種客戶端語言,用來處理這種裝簡單的驗證。當時就職於Netscape公司的布蘭登·艾奇開始着手計划將1995年2月發布的LiveScript同時在瀏覽器和服務器中使用。為了趕在發布日期前完成LiveScript的開發,NetscapeSun公司成立了一個開發聯盟。而此時,Netscape為了搭上媒體熱炒Java的順風車,臨時把LiveScript改名為JavaScript,所以從本質上來說JavaScriptJava沒什么關系。

  JavaScript 1.0獲得了巨大的成功,Netscape隨后在Netscape Navigator 3(網景瀏覽器)中發布了JavaScript 1.1。之后作為競爭對手的微軟在自家的IE3中加入了名為JScript(名稱不同是為了避免侵權)的JavaScript實現。而此時市面上意味着有3個不同的JavaScript版本,IEJScript、網景的JavaScriptScriptEase中的CEnvi。當時還沒有標准規定JavaScript的語法和特性。隨着版本不同暴露的問題日益加劇,JavaScript的規范化最終被提上日程。

  1997年,以JavaScript1.1為藍本的建議被提交給了歐洲計算機制造商協會ECMA,European Computer Manufactures Association)該協會指定39號技術委員會負責將其進行標准化,TC39來此各大公司以及其他關注腳本語言發展的公司的程序員組成,經過數月的努力完成了ECMA-262——定義了一種名為ECMAScript的新腳本語言的標准。第二年,ISO/IEC(國標標准化組織和國際電工委員會)也采用了ECMAScript作為標准(即ISO/IEC-16262)。

 

JavaScript實現:

雖然JavaScriptECMAScript通常被人用來表達相同的意思,但JavaScript的含義去比ECMA-262中規定的多得多。一個完整的JavaScript實現應由三個部分組成:

1.核心(ECMAScript)

2.文檔對象模型(DOM)

3.瀏覽器對象模型(BOM)

 

ECMAScript

  由ECMA-262定義的ECMAScript其實與Web瀏覽器沒有依賴關系。Web瀏覽器只是ECMAScript實現可能的宿主環境之一。ECMA-262定義的只這門語言的基礎,而在此基礎上可能構建更完善的腳本語言。說回宿主,它不僅提供基本的JavaScript的實現,同時也會提供該語言的擴展,比如DOM。其他宿主環境還包括NodeAdobe Flash

ECMA-262標准主要規定了這門語言的以下組成部分:

1.語法,2.類型,3.語句,4.關鍵字,5.保留字,6.操作符,7.對象。

 

ECMAScript的版本

  ECAMScript的不同版本又稱為版次,ECMA-262最近一版是第5版,發布於2009年。ECAM-262的第1版實質上與NetscapeJavaScript1.1相同,只不過做了些小改動:支持Unicode標准,對象與平台無關。

  ECMA-262第2版主要是編輯加工的結果,沒有作任何新增、修改或刪節處理。

  ECMA-262第3版才是對該標准第一次真正的修改。修改內容包括字符串處理、錯誤定義和數值輸出。這一版還新增了對正則表達式、新控制語句、try-catch異常處理的支持,並圍繞標准的國際化做出了一些小的修改。第3版也標志着ECMAScript成為了一門真正的編程語言。

  ECMA-262第4版對這門語言進行了一次全面的檢核修訂。由於JavaScriptWeb上日益流行。開發人員紛紛建議修訂ECMAScript,以使其能夠滿足不斷增長的Web開發需求。ECMA TC39重新召集相關人員共同謀划,結果,出台后的標准幾乎是在第3版的基礎上完全定義了一門新語言。第4版不僅包含了強類型變量、新語句和新的數據結構、真正的類和經典繼承。還定義了與數據交互的新方式。此時,TC39下屬的一個小組認為第4版給這門語言帶來的跨越太大了,他們提出了ECMAScript 3.1的替代性建議,該建議只對這門語言進行了較少的改進。最終,ES3.1附屬委員會獲得的支持超過了TC39ECMA-262第4版在正式發布前被放棄。ECMAScript 3.1最終成為ECMA-262第5版,並於2009年12月3日正式發布。第5版力求澄清第3版中已知的歧義並添加了新的功能,包括原生JSON對象、繼承的方法和高級屬性定義,以及嚴格模式。

 

文檔對象模型(DOM)

文檔對象模型是針對XML但經過擴展用於HTML的應用程序編程接口。DOM把整個頁面映射為一個多層節點結構。HTMLXML頁面中的每個組成部分都是某種類型的節點,這些節點又包含着不同類型的數據。

比如下面這個頁面:

<html>
    <head>        
        <title>Sample Page</title>
    </head>
    <body>
        <p>Hello World!</p>   
    </body>          
</html>    

可以通過下面這個分層節點樹表示:

通過DOM創建的這個表示文檔的樹形圖(通常也被稱作文檔樹),程序員可以通過DOM提供的API,輕松的對其中的任何節點進行刪除、添加、修改等操作。

 

DOM的級別:

  DOM正式被統一規划源自微軟與網景在開發DHTML(Dynamic HTML,動態HTML)上各持己見,DTHML的出現使得開發人員第一次無需重新加載網頁就可以修改其內容。為了控制Netscape和微軟在Web開發領域上兩強割據,導致瀏覽器互不兼容的局面,負責制定Web通信標准的W3C(WorldWide Web Consortium,萬維網聯盟)開始着手規划DOM

  DOM 1級於1998年10月成為W3C的推薦標准。DOM 1級由兩個部分組成:DOM核心(DOM Core)DOM HTML。其中DOM核心是規定如何映射基於XML的文檔結構,以便對文檔中的節點進行訪問和操作。DOM HTML則在DOM的核心的基礎上加以擴展,添加了針對HTML的對象和方法。這里需要注意的是,DOM並不是只針對JavaScript的,很多其他語言也都實現了DOM。只不在Web中,DOM已經成了JavaScript中重要的組成部分。

  DOM 2級在原基礎上擴展了鼠標和用戶界面整件、范圍、遍歷等細分模塊,而且通過對象接口增加了對CSS(Cascading Style Sheets,層疊樣式表)的支持。

  DOM 3級則進一步擴展了DOM,引入了加載和保存文檔的方法。

 

瀏覽器對象模型(BOM)

  開發人員可以使用BOM來控制瀏覽器顯示頁面以外的部分。而BOM真正與眾不同或者說經常導致問題的地方在於它是JavaScript實現的一部分卻不像DOM有着相關的標准。這個問題在HTML5中得到了解決,HTML5致力於把很多BOM功能寫入規范。HTML5發布后,很多關於BOM的困惑也就消失了。從根本來講,BOM只處理瀏覽器窗口和框架,但人們習慣上也把所有針對瀏覽器的JavaScript擴展算作BOM的一部分。下面就是一些這樣的擴展:

  • 彈出新瀏覽器窗口的功能;移動、縮放和關閉瀏覽器窗口的功能;
  • 提供瀏覽器詳細信息的navigator對象;
  • 提供瀏覽器所加載頁面的詳細信息的location對象;
  • 提供用戶顯示器分辨率詳細信息的screen對象;
  • 對cookies的支持;
  • 像XMLHttpRequest和IE的ActiveXObject(AJAX的核心實現)這樣的自定義對象。

關於BOM的更多內容會在以后的博文中詳細介紹。

 

感謝你的瀏覽,希望能對你有所幫助。

 

參考文獻:

Nicholas C.Zakas 著 JavaScript高級程序設計(第3版)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM