「要想全面理解和掌握JavaScript,關鍵在於弄清楚它的本質,歷史和侷限性」前端
JavaScript誕生於1995年,當時Web日益流行,由於網速太慢,爲了減輕用戶負擔,減小請求服務端驗證次數,當時走在技術革新最前端的Netscape(網景)公司,決定開發一種客戶端語言,用來處理簡單的驗證。能夠說JavaScript的誕生只是爲了減輕服務器和負擔,減小用戶等待時間。可是今日,JavaScript的功能已不只僅限於此了。git
當時就任於Netscape公司的布蘭登·艾克(Brendan·Eric),開始爲Netscape Navigator開發一種名爲LiveScript的語言,後來隨着Sun和Netscape的合做,爲了搭上媒體熱炒Java的順風車,臨時把LiveScript更名爲JavaScript,JavaScript雖然和Java有類似之處,可是並非Java的子集。JavaScript的主要設計原則是基於Self和Scheme.程序員
隨着JavaScript得到成功,Netscape公司隨即在Netscape Navigator 3發佈了JavaScript1.1。隨着Web的受關注,Microsoft向Spyglass公司買下Spyglass Mosaic的受權,發佈了IE瀏覽器的第一本版本—Internet Explorer 1,當時Netscape和Microsoft是主要的競爭者,而且都以飛速更新瀏覽器版本和增長新功能,不過Netscape Navigator仍然是其中的王者,市佔率超過八成。Microsoft在IE3中也加入了名爲JScript的JavaScript實現(主要是爲了不有關受權的問題)而且,自此Microsoft 的Internet Explorer市佔率開始緊追Netscape Navigator。1997年,Internet Exploer 4發佈,IE4包括了很多新功能,提升了對W3C標準的支持。Netscape和Microsoft的競爭引起的瀏覽器大戰的第一回合。github
(1997年,部分Netscape員工前往IE4發佈會現場,推到表明IE的E標誌,樹立了Mozilla的恐龍,並協商Netscape 72,Microsoft 18,表明當時的市佔率。)瀏覽器大戰時間表:http://upload.wikimedia.org/wikipedia/commons/7/74/Timeline_of_web_browsers.svgweb
當時Microsof(JScript)t和Netscape(JavaScript)還有CEnvi(ScriptEase)並無統一JavaScript的標準,幾種不一樣版本加劇了業內的擔憂,隨後JavaScript的標準化被提上日程。正則表達式
1997年,以JavaScript1.1的藍本被提交給歐洲計算機制造商協會(ECMA,Europen Computer Manufactures Association)該協會指定39號技術委員會指定相關標準「標準化一種通用,跨平臺,供應商中立的腳本語言的語法和語義」。TC39由來自Netscape,Sun,Microsoft,Borland及其餘關注腳本語言發展的公司程序員組成,他們通過數月的努力完成了ECMA262-定義一種名爲ECMAScript的新腳本語言的標準。第二年,ISO/IEC也採用了ECMAScript做爲標準,瀏覽器開始實現以ECMAScript爲基礎的JavaScript。編程
ECMAScript和Web瀏覽器沒有依賴關係,ECMAScript也能夠在其餘宿主環境中實現,包括Node,Adobe Flash。咱們常見的Web瀏覽器只是主要的宿主環境,宿主環境不只僅提供ECMAScript的實現,還包括一些擴展接口,以便環境和語言實現對接交互。瀏覽器
ECMA只是主要規定了:服務器
ECMAScript就是對實現標準規定的各個方面內容的語言描述。JavaScript實現了ECMAScript,AdobeScript也實現了ECMAScript。cookie
ECMAScript6標準預期將於2015年中旬發佈,ECMAScript6的代號叫ECMAScript Harmony或ES.next,預期ECMAScript6將包括多個新的概念和語言特性,Harmony的意思是「和諧」.ECMAScript6的草案已經完成了,接下來增長的主要是ECMAScript7,你們能夠查閱http://www.nczonline.net/blog/2014/06/03/my-ecmascript-7-wishlist/ 《JavaScript高級程序設計》做者的ES7但願加入的內容。
各大瀏覽器對於ECMAScript5的兼容,能夠查閱:http://kangax.github.io/compat-table/es5/.
文檔對象模型(DOM,document object model)是針對XML但通過擴展用於HTML的應用程序編程接口(application programming interface).DOM並非針對JavaScript的,不少語言也實現了DOM。不過DOM已經成爲JavaScript的重要一部分。DOM源於當時的瀏覽器大戰,Netscape要和Microsoft Internet Explorer一絕生死,又是都給瀏覽器賦予大量新的功能,包括VBScript,ActiveX和DHTML(Dynamic HTML,無需從新加載網頁,從而改變網頁外觀和結構),導致很多網頁不能同時在Netscape Navigator和Internet Explorer顯示正常,使Web開發者不得不寫兩套不一樣的內容。若是不對他們進行控制,就會出現兩強割據的局面。負責指定Web通訊標準的W3C(World Wide Web Consortium)聯盟,開始標準化DOM。
其餘DOM標準包括:除了DOM核心和DOM HTML擴展以外,另外幾種語言還發布了只針對本身的DOM擴展,下面都是基於XML的,每種都添加了與其相關的新方法和新接口:
還有一些,包括Mozilla的XUL(XML User Interface Language,XML界面語言),可是隻有上面幾種符合W3C標準。
Web瀏覽器對於DOM的支持,能夠查詢:http://www.webbrowsercompatibility.com/dom/desktop/
Internet Explorer3和Netscape Navigator3有一個共同的特點,那就是支持訪問和操做瀏覽器接口的瀏覽器對象模型(BOM Broswer Object Model).開發人員使用BOM能夠控制頁面以外的部分,可是它做爲JavaScript重要的一部分,卻沒有標準。不過這個問題最終在HTML5獲得解決,HTML5試圖把相關的BOM歸入規範。HTML5也於今天發佈,不過相關的HTML5.1還在指定中。
BOM只處理窗口和框架,下面是一些擴展:
BOM雖然也有一些事實標準,可是各個瀏覽器的實現都是不一致的。
依靠跨平臺,容易上手等優點,JavaScript已經成爲最受歡迎的編程語言之一。隨着引擎如V8和框架如Node.js的發展和事件驅動和異步IO等特性,JavaScript愈來愈被用來做爲服務端開發。JavaScript的將來推薦看一個視頻,名字爲2050年的JavaScript。
JavaScript是一種專爲與網頁交互而設計的腳本語言。爲了減小服務端請求和減小用戶等待時間,當時的瀏覽器霸主Netscape Navigator走在技術革新的前面。它的員工布蘭登在1995年發佈了JavaScript語言,後來Microsoft進入瀏覽器領域,也加入名爲JScript的實現,爲了標準化JavaScript,ECMA T39指定了語法核心標準。叫ECMAScript或ECMA-262定義。這二者和JavaScript的聯繫只是規範了相關的核心語法功能,JavaScript的實現還包括BOM和DOM兩個重要部分,瀏覽器對ECMAScript第三版支持大致不錯,對於第五版的標準支撐程度也愈來愈多。對於DOM,各家支持的程度都差很少,對已經正式歸入HTML5標準的BOM來講,如今各家瀏覽器的實現仍是因瀏覽器而已。如今市場上五個主要瀏覽器是(IE , Firefox(Netscape的繼承人),Chrome , Safari , 和 Oprea)[桌面端]。