javascript
了解一下JavaScript的未来——ECMAScript5
神馬是EcmaScript5
首先得先搞清楚ECMAScript是神馬,我們知道JavaScript或者說(shuō)LiveScript最開(kāi)始是Netscape搞出來(lái)的,后來(lái)微軟也跟進(jìn)搞出了Jscript,ScriptEase也有自己的CENvi,這樣就有了三個(gè)版本的瀏覽器Script各行其是,大家懂這個(gè)混亂的,于是乎標(biāo)準(zhǔn)化的問(wèn)題被提上議事日程。1997年以JavaScript1.1為藍(lán)本的建議被提交到歐洲計(jì)算機(jī)制造商協(xié)會(huì)(European Computer Manufacturers Association),最后大家載歌載舞搞出了ECMA-262——一種名為ECMAScript的新腳本語(yǔ)言標(biāo)準(zhǔn)。第二年,ISO/IEC(國(guó)際標(biāo)準(zhǔn)化組織和國(guó)際電工委員會(huì))也采用ECMAScript作為標(biāo)準(zhǔn),此后天下太平,各大瀏覽器廠商以ECMAScript作為各自實(shí)現(xiàn)JavaScript的基礎(chǔ),當(dāng)然只是基礎(chǔ),沒(méi)完全按照來(lái),否則我們也不會(huì)有那么多瀏覽器兼容性問(wèn)題。
那么ECMAScript5是什么呢?顧名思義跟iPhone5一樣是這個(gè)奇怪東東的第五個(gè)版本,我們現(xiàn)在常用的時(shí)ECMAScript3,相比前兩個(gè)版本這個(gè)版本算是一門(mén)正真的編程語(yǔ)言而不是玩具了,變得很流行。
為什么沒(méi)有ECMAScript4就開(kāi)始有ECMAScript5了呢?實(shí)際上4也是有的,不過(guò)這個(gè)版本幾乎顛覆了之前版本,沒(méi)有瀏覽器廠商跟進(jìn),基本就廢棄了,而ECMAScript5只是在3.1的基礎(chǔ)上做了一定的拓展,而且各大瀏覽器廠商響應(yīng)積極,所以稱(chēng)得上是JavaScript的未來(lái)。
ECMAScript與JavaScript有神馬關(guān)系
雖然我們經(jīng)常拿著兩個(gè)東東都表達(dá)相同的含義,但正如剛才提到,JavaScript是各大瀏覽器廠商基于ECMAScript的實(shí)現(xiàn),也就是說(shuō)ECMAScript是標(biāo)準(zhǔn),而JavaScript是真正的語(yǔ)言。
其實(shí)看看ECMAScript文檔可以發(fā)現(xiàn)ECMAScript和web瀏覽器沒(méi)有依賴(lài)關(guān)系,并不包含輸入和輸出的定義,也沒(méi)有DOM啊、BOM啊神馬的,它主要包括
1. 語(yǔ)法
2. 類(lèi)型
3. 語(yǔ)句
4. 關(guān)鍵字
5. 保留字
6. 操作符
7. 對(duì)象
而基于此的JavaScript致力于用戶(hù)和瀏覽器交互,所以在ECMAScript基礎(chǔ)上拓展了很多內(nèi)容,主要包括
1. 核心(ECMAScript)
2. 文檔對(duì)象模型(DOM)
3. 瀏覽器對(duì)象模型(BOM)
這樣JavaScript以瀏覽器為宿主,進(jìn)行瀏覽器與用戶(hù)的交互,使網(wǎng)頁(yè)具有動(dòng)態(tài)性。ECMAScript和JavaScript關(guān)系是這樣的(ECMAScript出來(lái)一小塊兒是因?yàn)楹芏郕avaScript并沒(méi)有完全實(shí)現(xiàn)標(biāo)準(zhǔn))
嚴(yán)格模式
ECMAScript5 認(rèn)可有些用戶(hù)希望限制使用語(yǔ)言中某些功能的可能性,不讓JavaScript容錯(cuò)性那么高,對(duì)代碼嚴(yán)格一些,他們這樣做可能是為了安全考慮,避免他們認(rèn)為是容易出錯(cuò)的功能,獲得增強(qiáng)的錯(cuò)誤檢查,或其他原因。
為此ECMAScript5引入“嚴(yán)格模式”概念,在JavaScript文件頂部或者方法上面添加字符串”use strict”就可以啟用嚴(yán)格模式,因?yàn)檫@就是一個(gè)字符串,所以老式瀏覽器會(huì)直接忽略,不會(huì)造成兼容性困擾。
var o = Object.create({}, { 'sex':{value: 'male',writable: false,enumerable: false,configurable: false}});o.sex = 'female';console.log(o.sex);//male雖然我們把sex的configurable設(shè)成了false,也就是不能修改sex的值,但是我們?cè)诖a中試圖修改也沒(méi)什么事兒,只是sex不會(huì)改變而已,但是如果我們使用嚴(yán)格模式
'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);在賦值的時(shí)候程序會(huì)直接報(bào)錯(cuò),終止執(zhí)行,關(guān)于在嚴(yán)格模式下哪些操作做不得可以看看MSDN上關(guān)于嚴(yán)格模式的講解
瀏覽器支持
目前主流的瀏覽器都對(duì)ECMAScript5支持
- Opera 11.60 +
- Internet Explorer 9+(IE9不支持嚴(yán)格模式,IE10支持)
- Firefox 4 +
- Safari 5.1+(不支持Function.prototype.bind)
- Chrome 13+
詳細(xì)支持情況可以看看 ECMAScript 5 compatibility table
新特性
ECMAScript5 Object的新屬性方法
ECMAScript5 Array新增方法
ECMAScript5的其它新特性
querySelector和querySelectorAll
總結(jié)
以上是生活随笔為你收集整理的了解一下JavaScript的未来——ECMAScript5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CCNA认证(1)--CCNA简介
- 下一篇: Spring Cron Expressi