第 25 章. ECMAScript 5 新特性
目录
购买本书
(广告,请不要屏蔽。)

第 25 章. ECMAScript 5 新特性

本章列出了仅在 ECMAScript 5 中可用的功能。如果您必须使用较旧的 JavaScript 引擎,则应避免使用这些功能,或者通过库启用其中的一些功能(稍后将介绍)。请注意,通常情况下,本书假设您使用的是完全支持 ECMAScript 5 的现代引擎。

ECMAScript 5 规范包含对其范围的以下描述

ECMAScript 第五版(作为 ECMA-262 第五版发布)

  • 编纂了语言规范的事实上的解释,这些解释已在浏览器实现中变得普遍,并且
  • 增加了对自第三版发布以来出现的新功能的支持。这些功能包括

    • 访问器属性,
    • 对象的反射创建和检查,
    • 属性属性的程序控制,
    • 其他数组操作函数,
    • 对 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 章

使用旧版浏览器的技巧

如果您需要使用旧版浏览器,以下资源将非常有用:

  • Juriy Zaytsev(“kangax”)的兼容性表显示了各种浏览器版本对 ECMAScript 5 的支持程度。
  • es5-shim将 ECMAScript 5 的大部分(但不是全部)功能带到了仅支持 ECMAScript 3 的浏览器中。
下一页:IV. 技巧、工具和库