了解一下JavaScript的未来——ECMAScript5

神马是EcmaScript5

首先得先搞清楚ECMAScript是神马,我们知道JavaScript或者说LiveScript最开始是Netscape搞出来的,后来微软也跟进搞出了Jscript,ScriptEase也有自己的CENvi,这样就有了三个版本的浏览器Script各行其是,大家懂这个混乱的,于是乎标准化的问题被提上议事日程。1997年以JavaScript1.1为蓝本的建议被提交到欧洲计算机制造商协会( E uropean C omputer M anufacturers A ssociation),最后大家载歌载舞搞出了ECMA-262——一种名为ECMAScript的新脚本语言标准。第二年,ISO/IEC(国际标准化组织和国际电工委员会)也采用ECMAScript作为标准,此后天下太平,各大浏览器厂商以ECMAScript作为各自实现JavaScript的基础,当然只是基础,没完全按照来,否则我们也不会有那么多浏览器兼容性问题。

那么ECMAScript5是什么呢?顾名思义跟iPhone5一样是这个奇怪东东的第五个版本,我们现在常用的时ECMAScript3,相比前两个版本这个版本算是一门正真的编程语言而不是玩具了,变得很流行。

为什么没有ECMAScript4就开始有ECMAScript5了呢?实际上4也是有的,不过这个版本几乎颠覆了之前版本,没有浏览器厂商跟进,基本就废弃了,而ECMAScript5只是在3.1的基础上做了一定的拓展,而且各大浏览器厂商响应积极,所以称得上是JavaScript的未来。

ECMAScript与JavaScript有神马关系

虽然我们经常拿着两个东东都表达相同的含义,但正如刚才提到,JavaScript是各大浏览器厂商基于ECMAScript的实现,也就是说ECMAScript是标准,而JavaScript是真正的语言。

其实看看 ECMAScript文档 可以发现ECMAScript和web浏览器没有依赖关系,并不包含输入和输出的定义,也没有DOM啊、BOM啊神马的,它主要包括

而基于此的JavaScript致力于用户和浏览器交互,所以在ECMAScript基础上拓展了很多内容,主要包括

  1. 文档对象模型(DOM)
  2. 浏览器对象模型(BOM)

    这样JavaScript以浏览器为宿主,进行浏览器与用户的交互,使网页具有动态性。ECMAScript和JavaScript关系是这样的(ECMAScript出来一小块儿是因为很多JavaScript并没有完全实现标准)

严格模式

ECMAScript5 认可有些用户希望限制使用语言中某些功能的可能性,不让JavaScript容错性那么高,对代码严格一些,他们这样做可能是为了安全考虑,避免他们认为是容易出错的功能,获得增强的错误检查,或其他原因。

为此ECMAScript引入“严格模式”概念,在JavaScript文件顶部或者方法上面添加字符串”use strict”就可以启用严格模式,因为这就是一个字符串,所以老式浏览器会直接忽略,不会造成兼容性困扰。

var o = Object.create({}, { ‘sex‘:{
            value: ‘male‘,
            writable: false,
            enumerable: false,
            configurable: false
           }
          });
          o.sex = ‘female‘;
          console.log(o.sex);//male

虽然我们把sex的configurable设成了false,也就是不能修改sex的值,但是我们在代码中试图修改也没什么事儿,只是sex不会改变而已,但是如果我们使用严格模式

‘use strict‘
        var o = Object.create({}, { ‘sex‘: {
            value: ‘male‘,
            writable: false,
            enumerable: false,
            configurable: false
        }
        });
        o.sex = ‘female‘; //Uncaught TypeError: Cannot assign to read only property ‘sex‘ of #<Object>
        console.log(o.sex);

在赋值的时候程序会直接报错,终止执行,关于在严格模式下哪些操作做不得可以看看 MSDN上关于严格模式的讲解

浏览器支持

目前主流的浏览器都对ECMAScript支持

  • Opera 11.60 +
  • Internet Explorer 9+(IE9不支持严格模式,IE10支持)
  • Firefox 4 +
  • Safari 5.1+(不支持Function.prototype.bind)
  • Chrome 13+

详细支持情况可以看看 ECMAScript 5 compatibility table

新特性

ECMAScript5 Object的新属性方法

ECMAScript5 Array新增方法

ECMAScript5的其它新特性

querySelector和querySelectorAll

原文地址:https://www.cnblogs.com/both-eyes/p/10092329.html

时间: 2024-11-05 19:41:21

了解一下JavaScript的未来——ECMAScript5的相关文章

CommonJS、CMD、AMD、NodeJS创造JavaScript的未来

CMD是国内玉伯大神在开发SeaJS的时候提出来的,属于CommonJS的一种规范,此外还有AMD,其对于的框架是RequireJS 1.二者都是异步模块定义(Asynchronuous Module Definition)的一个实现: 2.CMD和AMD都是CommonJS的一种规范的实现定义,RequireJS和SeaJS是对应的实践: 3.CMD和AMD的区别:CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了,比较方便:而AMD则相反,定义

关于JavaScript

“要想全面理解和掌握JavaScript,关键在于弄清楚它的本质,历史和局限性” 历史 JavaScript诞生于1995年,当时Web日益流行,因为网速太慢,为了减轻用户负担,减少请求服务端验证次数,当时走在技术革新最前端的Netscape(网景)公司,决定开发一种客户端语言,用来处理简单的验证.可以说JavaScript的诞生只是为了减轻服务器和负担,减少用户等待时间.但是今日,JavaScript的功能已不仅仅限于此了. 当时就职于Netscape公司的布兰登·艾克(Brendan·Eri

JavaScript面向对象轻松入门之概述(demo by ES5、ES6、TypeScript)

写在前面的话 这是一个JavaScript面向对象系列的文章,本篇文章主要讲概述,介绍面向对象,后面计划还会有5篇文章,讲抽象.封装.继承.多态,最后再来一个综合. 说实话,写JavaScript面向对象的文章实在是太多了,网上一搜一大堆,很多书里面也介绍的很详细.但作者当初在学习面向对象的时候还是非常困难,特别是在习惯了面向过程编程的情况下,不知道大家有没有这个感受. 作者分析了一下其中的原因,恐怕是因为里面涉及的概念太多:原型.原型链.继承.this.constructor.call等等,这

《JavaScript高级程序设计(第3版)》.Nicholas.C.Zakas.扫描版.pdf

下载地址:网盘下载 内容简介 编辑 本书从最早期Netscape浏览器中的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点.JavaScript与浏览器的交互.更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决方案有关的问题,如错误处理.调试.安全性.优化/混淆化.XML和Web服务,最后介绍应用所有这些知识来创建动态用户界面. 本书适合有一定编程经验的开发人员阅读,也可作为高校相关专业课程的教

关于未来编程语言的预测

科技趋势变化很快不是什么秘密——创造这些技术的工具和方法也在不断变化.如果你不经常太齐头来看看明年的前景,你可能在编程的时候把坑越挖越深. 不管这些警告,下面就是这些预测.赶快读,因为未来比我们想象的变化的快. No. 1:GPU将会成为下一个CPU 想想那些人们吹嘘自己CPU的日子,现在即使最好的CPU也很少超过$200,但是厉害的显卡却可以达到$500.$600甚至更多.玩家喜欢攀比自己显卡的性能,而不是他们的CPU,这驱动了这个市场. 剩下的世界正在缓慢追赶.越来越多的软件正在使用GPU.

【JavaScript】使用面向对象的技术创建高级 Web 应用程序

本文讨论: JavaScript 是基于原型的语言 用 JavaScript 进行面向对象的编程 JavaScript 编码技巧 JavaScript 的未来 本文使用了以下技术: JavaScript   目录 JavaScript 对象是词典 JavaScript 函数是最棒的 构造函数而不是类 原型 静态属性和方法 闭包 模拟私有属性 从类继承 模拟命名空间 应当这样编写 JavaScript 代码吗? 展望 最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员.四年半来她一直

第九章:Javascript类和模块

(过年了,祝大家新年好!) 第6章详细介绍了javascript对象,每个javascript对象都是一个属性集合,相互之间没有任何联系.在javascript中也可以定义对象的类,让每个对象都共享某些属性,这种“共享”的特性是非常有用的.类的成员或实例都包含一些属性,用以存放它们的状态,其中有些属性定义了它们的行为(通常称为方法).这些行为通常是由类定义的,而且为所有实例所共享.例如,假如有一个名为complex的类用来表示复数,同时还定义了一些复数运算.一个complex实例应当包含复数的实

2016年度 JavaScript 展望(下)

[编者按]本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是<jQuery UI 实践> 一书的作者. 本文系 OneAPM 工程师编译呈现,以下为正文的第二部分.点此阅读第一部分. 本地移动 apps 在2015年,出现了一种新的基于 JavaScript 的移动应用开发类别:JavaScript Native.与基于 Cordova 或 PhoneGap 的应用不同,JavaScript 本地应用使用平台的本地控制与范型建立用户界面,无需涉

《精通JavaScript》读后感

<精通JavaScript>这本书是jQuery的作者John Resig写的,很遗憾,这么晚了才拜读这么一本好书. 现在的jQuery在开发中已经不常使用了,出现了后起之秀,各种MV*框架,到现在我也没有开始学习,所以我不能对比.昨天在微信公众号上面看到一篇关于<jQuery是否还有未来和应用场景>之中的文章,几位国外的大佬就此讨论了一下.想法大概是jQuery太重了,直接操作DOM也会显得有些笨拙和无法完成目前的分离式操作.估计是没有太多的应用场景了,我的想法大概是,在未来,我