了解一下JavaScript的未來——ECMAScript5


神馬是EcmaScript5

首先得先搞清楚ECMAScript是神馬,我們知道JavaScript或者說LiveScript最開始是Netscape搞出來的,后來微軟也跟進搞出了Jscript,ScriptEase也有自己的CENvi,這樣就有了三個版本的瀏覽器Script各行其是,大家懂這個混亂的,於是乎標准化的問題被提上議事日程。1997年以JavaScript1.1為藍本的建議被提交到歐洲計算機制造商協會(European Computer Manufacturers Association),最后大家載歌載舞搞出了ECMA-262——一種名為ECMAScript的新腳本語言標准。第二年,ISO/IEC(國際標准化組織和國際電工委員會)也采用ECMAScript作為標准,此后天下太平,各大瀏覽器廠商以ECMAScript作為各自實現JavaScript的基礎,當然只是基礎,沒完全按照來,否則我們也不會有那么多瀏覽器兼容性問題。

那么ECMAScript5是什么呢?顧名思義跟iPhone5一樣是這個奇怪東東的第五個版本,我們現在常用的時ECMAScript3,相比前兩個版本這個版本算是一門正真的編程語言而不是玩具了,變得很流行。

為什么沒有ECMAScript4就開始有ECMAScript5了呢?實際上4也是有的,不過這個版本幾乎顛覆了之前版本,沒有瀏覽器廠商跟進,基本就廢棄了,而ECMAScript5只是在3.1的基礎上做了一定的拓展,而且各大瀏覽器廠商響應積極,所以稱得上是JavaScript的未來。

ECMAScript與JavaScript有神馬關系

雖然我們經常拿着兩個東東都表達相同的含義,但正如剛才提到,JavaScript是各大瀏覽器廠商基於ECMAScript的實現,也就是說ECMAScript是標准,而JavaScript是真正的語言。

其實看看ECMAScript文檔可以發現ECMAScript和web瀏覽器沒有依賴關系,並不包含輸入和輸出的定義,也沒有DOM啊、BOM啊神馬的,它主要包括

1. 語法

2. 類型

3. 語句

4. 關鍵字

5. 保留字

6. 操作符

7. 對象

而基於此的JavaScript致力於用戶和瀏覽器交互,所以在ECMAScript基礎上拓展了很多內容,主要包括

1. 核心(ECMAScript)

2. 文檔對象模型(DOM)

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

這樣JavaScript以瀏覽器為宿主,進行瀏覽器與用戶的交互,使網頁具有動態性。ECMAScript和JavaScript關系是這樣的(ECMAScript出來一小塊兒是因為很多JavaScript並沒有完全實現標准)

image

嚴格模式

ECMAScript5 認可有些用戶希望限制使用語言中某些功能的可能性,不讓JavaScript容錯性那么高,對代碼嚴格一些,他們這樣做可能是為了安全考慮,避免他們認為是容易出錯的功能,獲得增強的錯誤檢查,或其他原因。

為此ECMAScript5引入“嚴格模式”概念,在JavaScript文件頂部或者方法上面添加字符串”use strict”就可以啟用嚴格模式,因為這就是一個字符串,所以老式瀏覽器會直接忽略,不會造成兼容性困擾。

var o = Object.create({}, { 'sex':{
            value: 'male',
            writable: false,
            enumerable: false,
            configurable: false
           }
          });
          o.sex = 'female';
          console.log(o.sex);//male

雖然我們把sex的configurable設成了false,也就是不能修改sex的值,但是我們在代碼中試圖修改也沒什么事兒,只是sex不會改變而已,但是如果我們使用嚴格模式

'use strict'
        var o = Object.create({}, { 'sex': {
            value: 'male',
            writable: false,
            enumerable: false,
            configurable: false
        }
        });
        o.sex = 'female'; //Uncaught TypeError: Cannot assign to read only property 'sex' of #<Object> 
        console.log(o.sex);

在賦值的時候程序會直接報錯,終止執行,關於在嚴格模式下哪些操作做不得可以看看MSDN上關於嚴格模式的講解

瀏覽器支持

目前主流的瀏覽器都對ECMAScript5支持

  • Opera 11.60 +
  • Internet Explorer 9+(IE9不支持嚴格模式,IE10支持)
  • Firefox 4 +
  • Safari 5.1+(不支持Function.prototype.bind)
  • Chrome 13+

詳細支持情況可以看看 ECMAScript 5 compatibility table

新特性

ECMAScript5 Object的新屬性方法

ECMAScript5 Array新增方法

ECMAScript5的其它新特性

querySelector和querySelectorAll


免責聲明!

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



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