標籤:行編輯 資料 分代 擴充 放棄 相容性 dom html 服務
ECMAscript是一種中性的語言,中性表示與所處環境(宿主環境)無關(用戶端/伺服器/瀏覽器),它僅僅是一個純粹意義上的語言。
ECMAscript-262定義了這門語言的基礎,或者說規則(比如說這門語言文法,裡面有什麼基礎類型,類型間如何轉換,變數行為,函數行為),就像定義了一個介面。
如何?這些規則就是宿主環境的事情了,當然宿主環境不僅要實現定義的規則,也會用這些規則做一些特定的事情,這些事情是沒有定義在ECMAscript中的擴充。
比如說Web瀏覽器中的Javascript:
Javascript = ECMAscript + DOM + BOM
- ECMAscript:語言核心
- DOM:文件物件模型 (操作HTML頁面內容)
- BOM:瀏覽器物件模型 (操作瀏覽器行為)
除了Javascript,還有其他宿主環境也實現了ECMAscript,比如Adobe的Actionscript。(語言定義出來是寫詩歌還是小說?)
題外話:如何定義規則不是件容易的事情,特別當這個規則是一門語言,這些規則要互相呼應,不能自相矛盾,規則定義太強會失去靈活性,定義太弱會不嚴謹不安全,這些都是直接影響到語言的發展和未來,如何把握這個度就是一門藝術。
版本
- ECMAscript v1:僅僅是Netscape的Javascript1.1除去瀏覽器部分代碼。
- ECAMScript v2:僅僅是對第一版進行編輯加工,不會作為相容性的標準。
- ECAMScript v3:對標準第一次真正的修改,字串處理,錯誤定義,數值輸出,Regex,控制語句,異常處理,這才成為一門真正的語言。
- ECAMScript v4:基本上定義了一門新的語言,強型別,新語句,新資料結構,真正的類,經典繼承,資料互動方式。
- ECAMScript v3.1:組委會覺得4改動太大!提出了3.1的替代建議,4沒有發布就放棄了
- ECAMScript v5: 澄清3中已知的歧義,添加新功能:JSON對象,繼承的方法,進階屬性定義,strict 模式。
目前瀏覽器中的Javascript都能相容v5(IE9,Firefox4,Chrome,Safari)
ECMAscript v.s. Javascript