JavaScript简史
JavaScript诞生于1995年,在没有JavaScript的时候,所有输入验证操作都必须由服务器端进行验证,在那个年代,人们还普遍使用电话拨号上网,导致了与服务器的每一次数据交换都成为了对人们耐心的考验。
发展时间线
- 1995-02:Netscape开发JavaScript 1.0完毕
- 1996-08:微软开发JScript,与Netscape相竞争
- 1997:ECMA(欧洲计算机制造商协会)指定TC39技术委员会进行JavaScript和JScript的标准化进程,数月之后,ECMAScript出现了
- 1998:ISO/IEC也将ECMAScript作为标准,从此,浏览器开发商就以ECMAScript作为各自JavaScript实现的基础
JavaScript实现
JavaScript的内容比ECMAScript多得多。一个完整的JavaScript实现包含三个部分:
- 核心(ECMAScript),也可以说成是基础,根基
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
1 ECMAScript
ECMAScript是一个标准,它规定了脚本语言的基础,如基本数据类型,语法规范,操作符等,应注意的是它与web浏览器并没有依赖关系;而JavaScript是ECMAScript的一种实现,依赖于浏览器环境,并根据浏览器的特性扩展了ECMAScript如DOM,便于语言与环境之间的交互。其它ECMAScript的宿主环境如Node和Adobe Flash。
1.1 ECMAPScript规定了什么内容?
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
这里可以这样理解:ECMAScript是实现该标准规定的各个方面内容的语言的描述,如“应该有什么数据类型”,“应该怎么定义对象”,“循环、判断语句怎么写”类似的问题,但ECMAScript不作具体实现。
我认为这与SFS和GeoJSON、shp之间的关系十分类似,前者制定标准,后者进行实现(GIS专业知识,看不懂请忽略)。
1.2 如何实现ECMAScript?
简单来说,想要成为ECMAScript所认可的实现,则这个实现必须具备:
- 支持ECMAScript所描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
- 支持Unicode字符标准
实现可以进行扩展:
- 添加其他“类型、值、对象、属性、函数”
- 可以扩展定义ECMAScript没有定义的“程序和正则表达式”
因此,这为基于ECMAScript开发新语言的程序员提供了莫大的便利。
2 文档对象模型(DOM)
文档对象模型(DOM,Document Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口。
DOM把整个页面映射为一个多层节点结构。使得开发人员能够方便的控制页面的内容和结构,轻松自如地删除、添加、替换和修改任何节点。
2.1 为什么要使用DOM?
DOM亦是一个标准,目的是解决由于DHTML的出现造成的问题–由于Netscape和微软在开发DHTML方面各持己见,只编写一个HTML页面就能够在任何浏览器中运行的时代结束了。W3C联盟为了继续保持web跨平台的特性,着手制定了DOM标准。
2.2 DOM级别
DOM1级:
- DOM核心:规定如何映射基于XML的文档结构,简化对文档中任意部分的访问和操作
- DOM HTML:在DOM核心的基础上加以扩展,添加针对HTML的对象和方法
DOM2级:
- DOM视图:定义了跟踪不同文档视图的接口
- DOM事件:定义了事件和事件处理的接口
- DOM样式:定义了基于CSS为元素应用样式的接口
- DOM遍历和范围:定义了遍历和操作文档树的接口
DOM3级:
- DOM加载和保存
- DOM验证
- 对DOM核心加以扩展,支持XML1.0规范
2.3 其它DOM标准
-
SVG:可伸缩矢量图
-
MathML:数学标记语言
-
SMIL:同步多媒体集成语言
这三个标准也是W3C的推荐标准,各自添加了与自己相关的新方法和新接口。
应注意的是,DOM并不只是针对JavaScript的,很多别的语言也实现了DOM,不过,在web浏览器中,基于ECMAScript实现的DOM的确已经称为JavaScript这门语言的一个重要组成部分。实际上,对于XML,HTML,SVG,MathML,SMIL,JavaScript均已实现了它们所规定的DOM接口,可以轻松访问。
具体到JavaScript,即是JavaScript实现了DOM标准,将页面文档映射为了一个对象。
3 浏览器对象模型(BOM)
BOM可以访问和操作浏览器窗口,开发人员使用BOM可以控制浏览器显示页面以外的部分。
人们习惯上把针对浏览器的JavaScript扩展算作BOM的一部分,主要包括:
- 弹出新浏览器窗口
- 移动、缩放、关闭浏览器窗口
- 提供浏览器详细信息的navigator对象
- 提供浏览器所加载页面的详细信息的location对象
- 提供用户显示器分辨率详细信息的screen对象
- 对cookies的支持
小结
JavaScript是一种专为与网页交互而设计的脚本语言,由以下三部分组成:
- ECMAScript,提供核心语言功能
- 文档对象模型(DOM),提供访问和操作网页内容的方法和接口
- 浏览器对象模型(BOM),提供与浏览器交互的方法和接口
我们需要明确的是,ECMAScript、DOM和BOM都是一种标准,在其中定义了实现这种标准的语言应具备的方法和接口,JavaScript只是实现了这三种标准的语言之一,但由于JavaScript依赖于浏览器,不同的浏览器对于这三个标准的支持不尽相同,早期的前端开发者甚至需要开发好几套页面,尤其是一直遭人诟病的IE浏览器,对标准的支持性较为落后,兼容问题令人头疼。
实际上,当我们提及IE对JavaScript的支持不高时,我们其实是在说IE的JScript对ECMAScript和DOM的支持不高。