新版本在给基本库带来更新的同时,还引入了更加严格的运行时模型,来帮助定位并移除通常的代码错误。
而早期对于ECMAScript 4的标准化工作基本就算是失败了;只有Adobe的ActionScript是基于建议的变化的。ECMA甚至都没有发布一个版本4的规范,因为不同的组织对于发展的进度并不满意;就这样,也没有浏览器来支持它了。
在过去的几年,随着JavaScript引擎的大力改善,比如Nitro和TraceMonkey,JavaScript已经极具性能,以Google Wave为代表的在线协作应用可以证明这一点。甚至还有伴随GWT 2.0发布的Google Chrome扩展Speed Tracer,来帮助优化JavaScript应用的性能。
从这点上来讲,ECMAScript 5旨在和当前的ECMAScript 3版本保持向后兼容(以寻求在不同浏览器上更快速的采用),并对开发者提供了更加严格的限制来避免通常的编码陷阱。
严格模式
严格模式的引入,目的在于避免ECMAScript应用中通常的代码问题。这是通过在单元(脚本或函数)上指定一句话来达到的:
"use strict;"
这句话不会对已有的运行时产生什么影响,但版本是5的新运行时就会为整个脚本(如果这句话定义在脚本开头)或者单个函数(如果定义在函数的开头)打开严格模式。这样就允许计划中的既有代码对严格模式和非严格模式的混合使用。那么,严格模式意味着什么呢?
- 变量在使用前必须声明。换句话说,i=3这下就是个运行时错误了;需要var i=3(如果i在做作用域里面没有定义过)
- eval变成保留字,而从eval引入的新变量不再有效,因此eval("var i=3"); print(i);现在会抛出错误。
- 不再使用八进制;所以010就是十,不再是八。
- 如果configurable被设置成false,delete就不能使用在参数、函数、变量或者其他属性上。
- 一般会带来错误的with语句,将不再使用,会被认为是语法错误。
- 函数不再能使用具有相同名称的重复参数。
- 对象不再能使用具有相同名称的重复属性。
- arguments和caller变量不再可变。
- 对全局对象的访问将会是运行时错误。
库扩展
基本库中的其他扩展包括:
- Date现在可以支持生成ISO8601格式的日期(比如20091209T12:34:56Z),并可以解析。
- String现在有内建的trim()方法
- 新添JSON对象包括parse和stringify方法来支持JSON数据的高效生成;就像eval,但在减少代码时不会带来安全影响。另外,不仅仅可以使用RFC 4627中的JSONObject和JSONArray,还可以使用JSONValue。(RFC 4627把JSON-Text限制成一个对象或者数组)
- 新添bind内建方法,就跟Prototype的bind方法的语义一样。
- 数组现在可以支持indexOf(),map(),filter()和reduce()。
- 对象现在有seal()方法(防止添加新的属性和删除既有属性)和freeze()方法(使得所有属性变成只读,同时防止新添属性或删除属性)
- Object.keys()可以列出所有能列举的对象属性。
- Object.getOwnPropertyNames()可以列出所有能列举和不能列举的属性。
- Object.getPrototypeof()可以得到指定对象的prototype属性。
总结
新增的标准JSON对象解析机制和严格模式将会让开发者受益良多,使得转化成Prototype和其他扩展库需要的更小型库成为可能。从JSON流解析出ISO日期现在要变得比以前方便很多,而且看起来会成为将来日期表示事实上的标准。最后,因为这次是向后兼容的,并从Prototype这样既有库获得灵感,开发者和web浏览器很有可能在不久将来会为JavaScript带来新的特性。
原版下载
相关推荐
《JavaScript权威指南-ECMAScript5.pdf》这本书深入浅出地介绍了JavaScript的核心概念和语法,为初学者和有经验的开发者提供了全面的指导。以下是一些主要的知识点: 1. **变量与数据类型**:JavaScript是动态类型...
本压缩包包含的是ECMAScript的三个重要版本:ECMAScript 5(ES5)、ECMAScript 6(ES6,也称为ES2015)以及ECMAScript 2018(ES2018)。这些版本在JavaScript的发展历程中扮演了关键角色,引入了许多新的特性和改进...
**ECMAScript 5(ES5)** 是JavaScript语言的一个版本,它在2009年发布,并在现代Web开发中扮演着重要角色。ES5是ECMAScript标准的第五版,由欧洲计算机制造商协会(ECMA)制定,旨在提供一个标准化的脚本语言,以...
### ECMAScript 5 版本特性解析 #### 引言 随着互联网技术的迅猛发展,JavaScript 作为一种广泛应用于浏览器端的脚本语言,其重要性日益凸显。为了更好地满足开发者的实际需求并提高编程效率,ECMAScript 第五版...
严格模式(Strict Mode)是ECMAScript 5的新特性,它允许你把整个程序,或者某个函数,放置在“严格”的操作语境中。这种严格的语境会防止某些特定的操作并抛出更多的异常。 虽然ECMAScript 5对ECMAScript 3是向下...
属性描述符是ECMAScript 5引入的一个强大特性,它允许开发者更精细地控制对象的属性行为。通过属性描述符,我们可以定义属性的读写规则、是否可枚举以及是否可以删除或改变描述符。本文将深入探讨其中的关键概念,...
然而,当涉及到ECMAScript 5的兼容性时,一些常见的mixin实现可能会出现问题,特别是在处理getter和setter等新特性时。本文将深入探讨这个问题,并提供一个解决方案。 首先,让我们回顾一下传统的mixin函数,它通常...
ECMAScript 6 represents the biggest update to the core of JavaScript in the history of the ... you'll find Understanding ECMAScript 6 indispensable on your journey from ECMAScript 5 to ECMAScript 6.
在深入探讨正则表达式字面量在ECMAScript5中的变化之前,有必要先了解ECMAScript(ECMA-262)标准的背景以及正则表达式在JavaScript中的基本用法。ECMAScript是一种由ECMA国际标准化的脚本语言规范,其中JavaScript...
ECMAScript5是JavaScript语言的一个重要版本,发布于2009年,它引入了许多新的特性和改进,尤其是在数组操作方面。在这个版本中,Array对象得到了显著增强,新增了多个实用的方法,使得处理数组变得更加方便和高效。...
ECMAScript 5(简称ES5)是ECMAScript的一个重要版本,带来了许多新特性,这些新特性在《JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性》中被详细讨论。 ES5相对于之前版本,如ECMAScript 3(简称...
ecmascript 5.1版本标准(中文版),详细规定了JavaScript的各种标准
- **ECMAScript 5**:2009年12月发布,包含了一些较小幅度的改进,同时启动了更长期的项目——Harmony,以容纳那些更为激进的想法。 - **Harmony项目**:该项目最初旨在整合ES4中未被采用的高级特性,但最终演变为多...
es5-微垫片ECMAScript 5 函数的几个垫片: Array.isArray Array.prototype.indexOf Function.prototype.bind Object.create Object.keys安装安装: npm install -g component然后: component install gamtiq/es5-...
es5-shim.js和es5-shim.min.js猴子修补了一个JavaScript上下文,以包含所有EcmaScript 5方法,这些方法可以用旧版JavaScript引擎如实地模拟。 注意:由于es5-shim.js旨在修补本机Javascript引擎,因此应该首先加载...
为了解决这个问题,ECMAScript5引入了Array.isArray()方法,它不受框架环境的影响,能够准确判断一个变量是否为数组类型。 在使用数组时,我们经常需要处理数据的增删和查询,数组提供的这些方法极大地简化了操作的...