`
zha_zi
  • 浏览: 584149 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ECMAScript 5

阅读更多

         

         新版本在给基本库带来更新的同时,还引入了更加严格的运行时模型,来帮助定位并移除通常的代码错误。

而早期对于ECMAScript 4的标准化工作基本就算是失败了;只有Adobe的ActionScript是基于建议的变化的。ECMA甚至都没有发布一个版本4的规范,因为不同的组织对于发展的进度并不满意;就这样,也没有浏览器来支持它了。

在过去的几年,随着JavaScript引擎的大力改善,比如NitroTraceMonkey,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

    本书适合那些希望学习Web编程语言的初、中级程序员和希望精通JavaScript的JavaScript程序员阅读。

    ECMAScript全套(5,6,2018).zip

    ECMAScript全套(ECMAScript5,ECMAScript6,ECMAScript2018)

    JS模拟实现ECMAScript5新增的数组方法

    ECMAScript5 新增了十个数组方法,这些方法只有在ie9及以上浏览器中可以被使用,下面是对于这些方法的模拟实现。 一、Array.isArray(element)  该方法用于判断传入的对象是否为数组类型,返回true和false。 Array....

    es5:ecmascript 5 中文版 + es合集

    es5 ecmascript 5 中文版 + es合集 关于部分不是规范的一部分,而是我补充的,有一些话需要说在前面,本规范原出处为

    ECMAScript 5严格模式(Strict Mode)介绍

    严格模式(Strict Mode)是ECMAScript 5的新特性,它允许你把整个程序,或者某个函数,放置在“严格”的操作语境中。这种严格的语境会防止某些特定的操作并抛出更多的异常。 虽然ECMAScript 5对ECMAScript 3是向下...

    Understanding ECMAScript 6

    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.

    ECMAScript 5中的属性描述符详解

    主要介绍了ECMAScript 5中的属性描述符详解,本文讲解了Object.defineProperty、数据描述符、存取描述符、获取属性描述符、对象控制等内容,需要的朋友可以参考下

    Understanding.ECMAScript.6.159327757

    Whether you're a web developer or a Node.js developer, you'll find Understanding ECMAScript 6 indispensable on your journey from ECMAScript 5 to ECMAScript 6. Table of Contents Chapter 1: Block ...

    es5-micro-shim:ECMAScript 5 函数的几个垫片

    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:适用于旧式(和现代)JavaScript引擎的ECMAScript 5兼容性垫片

    es5-shim.js和es5-shim.min.js猴子修补了一个JavaScript上下文,以包含所有EcmaScript 5方法,这些方法可以用旧版JavaScript引擎如实地模拟。 注意:由于es5-shim.js旨在修补本机Javascript引擎,因此应该首先加载...

    JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性

    接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体...

    EasyWebApp.js:基于HTML 5,CSS 3,ECMAScript 5,AMD规范和jQuery API的声明式MVVM Web引擎

    声明式MVVM引擎-EasyWebApp v4基于AMD规范加载器,jQuery v3.2 +构建,兼容IE 9 +,ECMAScript 5 +,HTML 5+【原生态模板】 EWA模板语法完全沿用各种Web前端原生技术的标准语义- UI结构:HTML 5+标准标签, data-*...

    你的 mixin 真的兼容 ECMAScript 5 吗?

    我最近在与客户合作的项目中,需要充分利用的 ECMAScript 5,在此我遇到一个非常有趣的问题。 该问题源于一个非常常见的模式: mixin , 也就是在 JavaScript 中把一个对象的属性或者方法 mixin 到另一个。 大多数 ...

    kimbo.js:ECMAScript 5仅兼容JavaScript库

    ECMAScript 5仅兼容JavaScript库 这个轻量级JavaScript库的目标是使用最新的本机兼容JavaScript和DOM API提供一个美观,简短和扩展的API。 当然,只有在现代浏览器中才能利用惊人的本机速度,而不必再为较旧的浏览器...

    ECMAScript5(ES5)中bind方法使用小结

    主要介绍了ECMAScript5(ES5)中bind方法使用小结,bind和call以及apply一样,都是可以改变上下文的this指向的,需要的朋友可以参考下

    实例详解ECMAScript5中新增的Array方法

    主要介绍了实例详解ECMAScript5中新增的Array方法的相关资料,需要的朋友可以参考下

    gg:符合 ECMASCRIPT 5 标准的 JavaScript 实用程序库

    一个符合 ECMASCRIPT 5 标准的 JavaScript 实用程序库。 实例方法 实例方法是指gg实例上的所有方法。 调用gg(selector)时会返回一个gg实例,其中selector是一个。 gg实例上的几乎所有方法都返回实例或新实例以启用...

    ECMAScript5中的对象存取器属性:getter和setter介绍

    显然这是一个无关IE(高级IE除外)的话题,尽管如此,有兴趣的同学还是一起来认识一下ECMAScript5标准中getter和setter的实现。在一个对象中,操作其中的属性或方法,通常运用最多的就是读(引用)和写了,譬如说o....

    ECMAScript6入门

    《ECMAScript6入门》全面介绍了ECMAScript6新引入的语法特性,覆盖了ECMAScript6与ECMAScript5的所有不同之处,对涉及的语法知识给予了详细介绍,并给出了大量简洁易懂的示例代码。, 《ECMAScript6入门》为中级难度...

Global site tag (gtag.js) - Google Analytics