JavaScript的前世今生

JavaScript简史

  • JavaScript由Brendan Eich发明,并首次应用于Netscape Navigator 2浏览器中。当时命名为LiveScript,为了赶Java的热度,后改名为JavaScript。当时它的主要目的用于验证表单数据(当时网速的限制了与服务端的交互速度)。
  • 微软在IE3中加入了名为JScript的JavaScript实现。
  • 由于当时并没有标准规定JavaScript的语法和特性,从而导致两个不同版本的JavaScript并存。于是在1997年,以JavasScript1.1为蓝本的建议被提交给了ECMA(欧洲计算机制造商协会)。该协会指定TC39(39号技术委员会)负责,于是出现了名为ECMAScript的语言标准(EMNA-262),同年年底,ECMAScript1.0发布。
  • 1998年6月ECMA发布ECMAScript2.0,该版主要是为了与ISO/IEC-16262保持严格一致,没有作任何新增、修改或删除处理。
  • 1999年12月,ECMAScript发布ECMAScript3.0,修改的内容涉及字符串处理、错误定义和数值输出,新增了对正则表达式、新控制语句和try-catch异常处理的支持。ECMAScript3.0标志着ECMAScript成为了一门真正的编程语言。
  • 2000年,ECMAScript4.0开始着手实现,但由于该版本改动幅度较大(包含强类型变量、新语句和新数据结构、真正的类和经典继承,还定义了与数据交互的新方式),TC39下属的一个小组提出了一个名为ECMAScript3.1的替代性建议,ECMAScript3.1只进行小幅修订,能够在现有的JavaScript引擎基础上实现。最终ECMAScript4.0被放弃,ECMAScript3.1成为ECMAScript5.0并于2009年12月发布。ECMAScript5新增原生JSON对象(用于解析和序列化JSON数据)、继承的方法和高级属性定义,另外还包含一种严格模式。
  • 2011年6月,ECMAScript5.1版发布,成为国际标准。
  • 2015年6月,ECMAScript6版发布,成为国际标准。

JavaScript实现

虽然JavaScript和ECMAScript通常都被人们用来表达相同的含义,但JavaScript的含义要比ECMAScript多得多。一个完整的JavaScript应该有以下三个部分组成:

  • 语法和语义(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

ECMAScript与web浏览器没有依赖关系,实际上ECMAScript定义的只是这门语言的基础,在此基础之上可以构建更完善的脚本语言。web浏览器只是ECMAScript实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便语言与环境之间进行交互。其他宿主环境包括Node和Adobe Flash。ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。除了JavaScript,Adobe ActionScript也实现了ECMAScript。

ECMA-262标准规定了这门语言的下列组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

DOM

文档对象模型(Document Object Model)是针对XML但经过扩展用于HTML的API。DOM把整个页面映射为一个多层节点结构。由于IE4和Netscape navigator4分别支持不同形式的DHTML(Dynamic HTML)导致web跨平台的天性受到影响,于是负责Web通信标准的W3C(World Wide Web Consortium,万维网联盟)开始着手规划DOM。

1
2
3
4
5
6
7
8
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>

在DOM中,上面的代码可以通过下面的分层节点图表示。

节点图
DOM1级

DOM1级(DOM Level 1)在1998年10月成为W3C的推荐标准,由DOM核心(DOM Core)和DOM HTML两个模块组成。DOM核心规定如何映射基于XML的文档结构,DOM HTML添加了针对HTML的对象和方法。

DOM2级

DOM2级在原来的基础上有扩充了鼠标和用户界面事件、范围、遍历(迭代DOM文档的方法)等细分模块,同时增加了对CSS的支持。DOM2引入了下列新模块:

  • DOM视图(DOM Views):定义了跟踪不同文档视图的接口
  • DOM事件(DOM Events):定义了事件和事件处理的接口
  • DOM样式(DOM Style):定义了基于CSS为元素样式应用的接口
  • DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口

DOM3级

DOM3对DOM核心进行了扩展,开始支持XML1.0规范,涉及XML Infoset、XPath和XML Base,同时也级进一步扩展了DOM,引入了下列模块:

  • DOM加载和保存(DOM Load and Save):以同一方式加载和保存文档的方法
  • DOM验证(DOM Validation)::验证文档的方法

其他DOM标准

除了DOM核心和DOM HTML接口之外,另外几种语言还发布了只针对自己的DOM标准。如:

  • SVG(Scalable Vector Graphic,可伸缩矢量图) 1.0
  • MathML(Mathematical Markup Language,数学标记语言) 1.0
  • SMIL(Synchronized Multimedia Integration Language,同步多媒体集成语言)

BOM

浏览器对象模型(Browser Object Model),开发人员使用BOM可以控制浏览器显示的页面以外的部分。在HTML5中吧很多BOM功能写入规范。BOM只处理浏览器窗口和框架,但人们也把一些针对浏览器的JavaScript扩展也作为BOM的一部分,下面就是这些扩展:

  • 弹出新浏览器窗口功能
  • 移动、缩放和关闭浏览器窗口的功能
  • 提供浏览器详细信息的navigator对象
  • 提供浏览器所加载页面的详细信息的location对象
  • 提供用户显示器分辨率详细信息的screen对象
  • 对cookies的支持
  • 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象

本文参考资料

  • JavaScript高级程序设计(第3版)
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • © 2019-2021 musi

请我喝杯咖啡吧~

支付宝
微信