1、Javascript简史
javascript诞生于1995年,是由网景公司的Brendan Eich开发的,最初的目的是在客户端处理一些输入验证操作,自此后成为常见浏览器的特色功能,如今用途已经不限于简单的数据验证,而是具备与浏览器窗口及其内容等几乎所有方面交互的能力。当时javascript是为了搭上媒体热炒的java才改名为javascript其最初名为livescript。
在javascript取得巨大成功后,微软公司也在自己的浏览器中加入了名为JScript的javascript实现,从此遍有了两个不同的javascript版本:Netscape Navigator中的javascript和Internet Explorer中的JScript,直到1997年,以javascript1.1为蓝本的建议被提交给了欧洲计算机制造商协会(Europe Computer Manufacturers Association),并指定39号技术委员会(TC39,Technical Committee)负责指定:
标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义
由此制订了ECMA-262——即名为ECMAScript的脚本语言的标准。
第二年ISO/IEC也采用ECMAScript作为标准,从此以后,浏览器厂商就开始致力于将ECMAScript作为各自Javascript实现的基础。
2、 ECMAScript实现
javascript的含义要比ECMA-262中规定多得多,一个完整的Javascript实现应该由下列三个不同部分组成
- 核心(ECMAScript)
- 文档对象模型(Document Object Model)
- 浏览器对象模型(Broswer Object Model)
2.1 ECMAScript
ECMAScript与Web浏览器没有依赖关系,浏览器只是ECMAScript实现可能的宿主环境之一,宿主环境也提供了该语言的扩展,以便语言与环境之间对接交互,如DOM利用ECMAScript核心类型和语法提供更多的具体的功能,以便实现对环境的操作,还有其他环境Node、Adobe Flash。
这门语言并不包含输入输出的定义,ECMA-262只定义了这门语言的基础,在此基础上可以构建更完善的脚本语言。
- 语法
- 类型
- 语句
- 关键词
- 保留字
- 操作符
- 对象
ECMAScript就是对实现该标准规定的各个方面内容的语言描述,javascript实现了ECMAScript。Adobe Action也实现了ECMAScript。
2.2 文档对象模型(DOM)
文档对象模型(DOM)是针对XML但经扩展用于HTML的应用程序编程借口(API),DOM把整个页面映射为一个多层节点结构。HTML或XML页面中的面每个组成部分都是某种类型的节点,这些节点包含这不同类型的数据。
通过DOM创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构和主动全,借助DOM提供的API,可以轻松的删除、添加、替换或修改任何的节点。
早期由于IE和Netscape Navigator分别支持不同形式的DHTML(Dynamic HTML),开始出现各自的分歧,最后W3C着手规划DOM。
1998年DOM1级成为W3C的标准。DOM1级由两个模块组成:DOM核心和DOM HTML。
DOM1级:
DOM核心:如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作。
DOM HTML :在DOM核心基础上扩展,添加了HTML的对象和方法。
ps:DOM并不只是针对Javascript,别的语言也实现了DOM。
DOM2级引入了一下新模块:
DOM视图:定义了跟踪不同文档(例如:应用CSS之前和之后的文档)视图的接口。
DOM事件:定义了事件和事件处理的借口。
DOM样式:定义了基于CSS为元素应用样式的借口。
DOM遍历和范围:定义了遍历和操作文档树的借口。
DOM3进一步扩展了DOM
DOM加载和保存:引入了统一方式加载和保存文档的方法
DOM验证:新增加了验证文档的方法。
DOM核心扩展:开始支持XML1.0规范。
2.3 BOM对象模型
IE 和 Netscape Navigator 均支持可访问和操作浏览器窗口的浏览器对象模型(BOM),BOM作为Javascrip实现一部分直到HTML5时才有规范。
BOM只处理浏览器窗口和框架,由于没有BOM标准,虽然有事实上的标准,比如要有window对象和navigator对象,但每个浏览器都定义了自己的属性,有了HTML5之后,BOM的实现有望朝着兼容性越来越高的方向发展。
小结:
javascript是专门为与网页交互而设计的脚本,有三个不同部分组成:
- ECMAScript,由ECMA-262定义,提供核心语言功能。
- 文档对象模型,提供访问和操作网页内容的方法接口。
- 浏览器对象模型,提供与浏览器交互的方法和接口。