出现原因
在js问世之前,必须把表单数据发送到服务器端才能确定用户是否没有填写某个必填域或输入了无效值,这导致了上网可能需要进行多次数据交换,上网速度慢。因此,在当时出现js的主要目的是处理以前有服务器端语言负责的一些输入验证操作。于1995年诞生。
后续发展
JavaScript在日后的逐渐发展中,它的用途早已经不再局限于简单的数据验证,而是具备了于浏览器窗口及其内容等几乎全部方面交互的能力,成为一门功能全面的编程语言,能够处理复杂的计算和交互,拥有了闭包、匿名函数,甚至元编程等特性。
JavaScript实现
JavaScript是一种专为与网页交互而设计的脚本语言,完整的JavaScript实现由以下三部分组成:
- 核心 ECMAScript
- 文档对象模型 DOM
- 浏览器对象模型 BOM
ECMAScript
核心ECMAScript这门语言本身并不包含输入和输出定义,由ECMA-262定义的ECMAScript与Web浏览器没有依赖关系,只是js语言的基础,Web浏览器只是ECMAScript实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便语言和环境之间对接交互。而这些扩展是基于ECMAScript的核心类型和语法的。
ECMAScript的组成部分如下列所示:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
ECMAScript兼容的定义: - 支持ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
- 支持Unicode字符标准
兼容的实现可以进行的扩展: - 添加ECMA-262没有描述的“更多类型、值、对象、属性和函数”。ECMA-262所说的这些新增特性,主要是指该标准中没有规定的新对象和对象的属性
- 支持ECMA-262没有定义的“程序和正则表达式语法”
DOM
文档对象模型DOM是针对XML但经过扩展用于HTML的应用程序编程接口(API),即接口api。
DOM把整个页面映射为一个多层节点结构,html或xml页面中的每个组成部分都是某种类型的节点,这些节点有包含着不同类型的数据。
BOM
浏览器对象模型BOM
开发人员使用BOM可以控制浏览器显示的页面以外的部分,从根本上讲,BOM只处理浏览器窗口和框架。
人们习惯上把所有针对浏览器的JavaScript扩展算作BOM的一部分,下面是一些这样的扩展:
- 弹出新浏览器窗口的功能
- 移动、缩放和关闭浏览器窗口的功能
- 提供浏览器详细信息的navigator对象
- 提供浏览器所加载页面的详细信息的location对象
- 提供用户显示器分辨率详细信息的screen对象
- 对cookies的支持
- 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象