JavaScript進階程式設計(第3版)學習筆記13 ECMAScript5新特性

來源:互聯網
上載者:User

接下來應該是BOM和HTML5了,但是鑒於ECMAScript5相對於ECMAScript3的新變化比較多,而且這些變化也非常的有意思,因此在這篇文章中再將我認為的有意思的變化(並非全部變化)集中整理一下,但這裡只是列舉,不具體展開。

一、文法變化

1、關鍵字和保留字

  在ES3中,使用關鍵字做標識符會導致“Identifier Expected ”錯誤,而使用保留字做標識符可能會也可能不會導致相同的錯誤,具體取決於特定的引擎。在ES5中,關鍵字和保留字雖然不能作為標識符 使用,但可以作為對象的屬性名稱。在ES5中的關鍵字和保留字中,新增了let和yield。為了保證最大的相容性,不管是ES3還是ES5中的關鍵字和保留字,都不要作為標識符使用。

2、屬性特性

  ES5允許使用使用者定義的屬性描述來覆蓋給定屬性的enumerable、configurable、writable、get、set等屬性了。具體方法是使用定義在Object對象上的靜態函數。

3、strict 模式

  最大的文法變化,就是引入了strict 模式,可以通過語句"use strict"; 來開啟strict 模式,在代碼頂部添加整個指令碼啟用strict 模式,在函數內部添加則只對該函數啟用strict 模式。strict 模式下主要的變化有:

(1)使用變數前必須先定義,即不允許隱式的全域變數

(2)不使用八位元據

(3)不使用with語句

(4)eval

  A、不能使用eval作為標識符,因此不能把變數或函數命名為eval

  B、外部不能訪問在eval()函數中定義的變數

(5)arguments

  A、不能使用arguments作為標識符

  B、不能修改作為函數內部對象的arguments,因此形式參數和arguments之間不再有同步變化

  C、不能訪問arguments.callee

  D、ES5中定義了arguments.caller屬性,它的值始終是undefined,主要用於區分arguments.caller和函數的caller,但是不能在strict 模式下訪問

(6)函數

  A、函數中不能出現兩個同名的形式參數

  B、不能給函數的caller屬性賦值

  C、未指定環境對象而調用函數,this值不會指向window,而是undefined

(7)對象

  A、對象中不能出現兩個同名的屬性

  B、修改一個特性[[writable]]為false的屬性時,會拋出異常,而不是靜默失敗,同樣的使用delete刪除特性[[configurable]]為false的屬性時也會拋出異常

(8)delete

  不能使用delete刪除顯示聲明的變數和函數

二、內建對象的變化

1、Object對象

(1)繼承相關方法:create()、getPrototypeOf()

(2)屬性相關方法:defineProperty()、defineProperties()、getOwnPropertyDescriptor()、getOwnPropertyNames()、keys()

(3)防篡改方法:preventExtensions()、isExtensible()、seal()、isSealed()、freeze()、isFrozen()

2、Function對象

(1)添加了bind()方法。

(2)正常化了一個函數對象的屬性caller,用於指向調用當前函數的函數的引用。

(3)prototype是不可枚舉的

3、Array對象

(1)判斷方法:添加了靜態方法Array.isArray(obj)用於判斷obj是否為一個Array對象的執行個體。

(2)索引方法:添加了兩個用於尋找指定項索引的方法indexOf()和lastIndexOf()。尋找時使用全等(===)進行匹配。

(3)迭代方法:添加了every()、some()、forEach()、map()、filter()方法。

(4)縮小方法:添加了reduce()和reduceRight()方法。

4、String對象

  添加了trim()方法。

5、JSON對象

  添加了原生JSON內建對象。

6、Date對象

  添加了Date.now()、Date.prototype.toJSON()等方法。

7、RegExp對象

  在ES3中,使用Regex字面量時共用一個RegExp執行個體,而在ES5中,每次使用Regex字面量時都要建立新的RegExp執行個體,就像使用RegExp建構函式一樣。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.