第 25 章 ECMAScript 5 的新功能
目錄
購買書籍
(廣告,請不要阻擋。)

第 25 章 ECMAScript 5 的新功能

章節列出僅在 ECMAScript 5 中提供的功能。如果您必須使用較舊的 JavaScript 引擎,您應避免使用這些功能,或透過函式庫啟用其中一些功能(稍後會說明如何執行)。請注意,通常這本書假設您使用的是完全支援 ECMAScript 5 的現代引擎。

ECMAScript 5 規格包含其範圍的下列說明

ECMAScript 的第五版(以 ECMA-262 第 5 版發布)

  • 編纂語言規格的實際詮釋,這些詮釋已在瀏覽器實作中變得常見,且
  • 新增對自第三版發布以來出現的新功能的支援。此類功能包括

    • 存取器屬性,
    • 反射式建立和檢查物件,
    • 屬性屬性的程式控制,
    • 其他陣列操作函式,
    • 支援 JSON 物件編碼格式,以及
    • 提供增強錯誤檢查和程式安全性的嚴格模式。

語法變更

ECMAScript 5 包含 下列語法變更:

保留字作為屬性金鑰

您可以在點運算子之後和物件文字中未加引號的屬性金鑰中使用 保留字(例如 newfunction):

> var obj = { new: 'abc' };
> obj.new
'abc'
合法的尾隨逗號
物件文字和陣列文字中的尾隨逗號是合法的。
多行字串文字
如果您透過反斜線跳脫行尾,字串文字 可以跨越多行。

標準函式庫中的新功能

ECMAScript 5 為 JavaScript 的標準函式庫帶來許多 新增功能。本節依類別列出這些功能。

元程式設計

取得和設定原型(請參閱 取得和設定原型

  • Object.create()
  • Object.getPrototypeOf()

管理屬性特徵 (透過屬性描述子,請參閱 屬性描述子

  • Object.defineProperty()
  • Object.defineProperties()
  • Object.create()
  • Object.getOwnPropertyDescriptor()

列出屬性 (請參閱 屬性的反覆運算和偵測

  • Object.keys()
  • Object.getOwnPropertyNames()

保護 物件(請參閱 保護物件

  • Object.preventExtensions()
  • Object.isExtensible()
  • Object.seal()
  • Object.isSealed()
  • Object.freeze()
  • Object.isFrozen()

新的 Function 方法(請參閱 Function.prototype.bind(thisValue, arg1?, ..., argN?)

  • Function.prototype.bind()

新方法

字串(請參閱 第 12 章 字串

新的 Array 方法(請參閱 陣列原型方法

  • Array.isArray()
  • Array.prototype.every()
  • Array.prototype.filter()
  • Array.prototype.forEach()
  • Array.prototype.indexOf()
  • Array.prototype.lastIndexOf()
  • Array.prototype.map()
  • Array.prototype.reduce()
  • Array.prototype.some()

新的 Date 方法(請參閱 日期原型方法

  • Date.now()
  • Date.prototype.toISOString()

JSON

支援 JSON(請參閱 第 22 章 JSON

與舊版瀏覽器搭配使用的秘訣

如果您需要與舊版瀏覽器搭配使用,下列資源將會很有用:

  • Juriy Zaytsev(“kangax”)的 相容性表格 顯示各種瀏覽器的不同版本支援多少 ECMAScript 5。
  • es5-shim 將 ECMAScript 5 的大部分(但不是全部)功能帶到僅支援 ECMAScript 3 的瀏覽器中。
下一頁:IV. 秘訣、工具和函式庫