先知道几个名词
ECMAScript
有一个组织,叫ECMA International(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)。是一家国际性会员制度的信息和电信标准组织,它和企业密切相连的组织,所以 Ecma国际制定的规范标准都是由各类企业来做主要的制定和推广。 1997年该组织发布了ECMA-262的标准,该标准制定了MCMAscript语言规范。ECMAscript就是从这里来的。
ECMA-262
ECMA-262是ECMA TC39小组制定的关于脚本语言的规范标准。TC39成员由来自一些对脚本编程感兴趣的公司的程序员组成的。 ECMA-262标准定义了ECMAscript语言规范。这个这个标准也叫成为ECMAscript语言规范(ECMAScript Language Specification),简称ES规范。
JavaScript历史
1995年
JavaScript诞生于1995年。起初它的主要目的是处理以前由服务器端负责的一些表单验证。在那个绝大多数用户都在使用调制解调器上网的时代,用户填写完一个表单点击提交,需要等待几十秒,等待结束后服务器才反馈给你说某个地方填错了。
在当时如果能在客户端完成一些基本的验证绝对是令人兴奋的。当时走在技术革新最前沿的 Netscape(网景)公司,决定着手开发一种客户端语言,用来处理这种装简单的验证。当时就职于Netscape公司的Brendan Eich开始着手计划将1995年2月发布的LiveScript同时在浏览器和服务器中使用。为了赶在发布日期前完成LiveScript的开发,Netscape与Sun公司成立了一个开发联盟。而此时,Netscape为了搭上媒体热炒Java的顺风车,临时把LiveScript改名为JavaScript,所以从本质上来说JavaScript和Java没什么关系。
JavaScript 1.0获得了巨大的成功,Netscape随后在Netscape Navigator 3(网景浏览器)中发布了JavaScript 1.1。之后作为竞争对手的微软在自家的IE3中加入了名为JScript的JavaScript实现。
而此时市面上意味着有3个不同的JavaScript版本:
- Netscape Navigator 3.0 中的 JavaScript
- IE 中的 JScript
- CEnvi 中的ScriptEase。
当时还没有标准规定JavaScript的语法和特性。随着版本不同暴露的问题日益加剧,JavaScript的规范化最终被提上日程。
1997年
1997年,以JavaScript1.1为蓝本的建议被提交给了欧洲计算机制造商协会(ECMA,European Computer Manufactures Association)该协会指定39号技术委员会负责将其进行标准化,TC39来此各大公司以及其他关注脚本语言发展的公司的程序员组成,经过数月的努力完成了ECMA-262——定义了一种名为ECMAScript的新脚本语言的标准。第二年,ISO/IEC(国标标准化组织和国际电工委员会)也采用了ECMAScript作为标准(即ISO/IEC-16262)。
1998年
国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。同年发布了ECMA-262第二个版(ES2).第二个版本基本没有加新功能。
2002年
ECMA-262第三版(ES3),新增引入了强大的正则表达式,更好的字符串处理,新的控制语句,try / catch异常处理,更严格的错误定义,数字输出的格式化以及预期未来语言增长的微小变化。第三版在当时应用非常广泛,几乎所有的浏览器都支持ES3的标准。
ECMA-262第4版本(ES4)夭折,部分功能被迁移到ES6中。
2009年
ECMA-262第五版(ES5)发布。在ES3的基础上增加了很多功能:包括访问器属性,对象的反射创建和检查,属性属性的程序控制,附加的数组操作函数,对json对象编码格式的支持以及提供增强的错误检查和程序安全性的严格模式。
2011年
被批准为国际标准iso / iec 16262:2011。同年发布ES5.1版本(对ES5做一些升级优化)同时被MCMA-262和ISO/IEC批准。
2015年
ECMA-262第六版(ES6或者叫ES 2015语言规范),ES6可以说从2000年,ES3发布之后就开始沉淀,由于ES4的夭折,ES4中的一些功能特性一直等到ES6才发布,所以第六版的完全是十五年的努力的结果。
JavaScript的实现
1、ECMAScript(核心)
上面已经讲了ECMAScript的知识,总的来说就是 ECMAScript 描述了JavaScript的语法和基本对象。
所以 ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准。
每个浏览器都有它自己的 ECMAScript接口 的实现,然后这个实现又被扩展,包含了 DOM 和 BOM
2、DOM(文档对象模型)
Document Object Model
DOM 是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。
当一个html页面加载到浏览器的时候,那么浏览器会为每个标签都创建一个对应的对象描述该标签的所有信息,那么我们看到的网页信息实际上就是看到了这些标签对象的信息、 如果我们需要操作页面的数据,那么我们就可以通过这些标签对象进行操作。
3、BOM(浏览器对象模型)
Borwser Object Model
使用对象描述了浏览器的各个部分的内容。
开发人员可以使用BOM来控制浏览器显示页面以外的部分。而BOM真正与众不同或者说经常导致问题的地方在于它是JavaScript实现的一部分却不像DOM有着相关的标准。这个问题在HTML5中得到了解决,HTML5致力于把很多BOM功能写入规范。HTML5发布后,很多关于BOM的困惑也就消失了。从根本来讲,BOM只处理浏览器窗口和框架,但人们习惯上也把所有针对浏览器的JavaScript扩展算作BOM的一部分。下面就是一些这样的扩展:
- 弹出新浏览器窗口的功能;移动、缩放和关闭浏览器窗口的功能;
- 提供浏览器详细信息的navigator对象;
- 提供浏览器所加载页面的详细信息的location对象;
- 提供用户显示器分辨率详细信息的screen对象;
- 对cookies的支持;
- 像XMLHttpRequest和IE的ActiveXObject(AJAX的核心实现)这样的自定义对象。
由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。
总结
ECMAScript是JavaScript的一个标准;JavaScript是ECMA-262标准的实现和扩展。
参考 http://www.ecma-international.org/ecma-262/#sec-introhttps://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014344991049250a2c80ec84cb4861bbd1d9b2c0c2850e000