Tips: 内容为知识梳理
目录
1.JavaScript的由来
由于以前的上网速度较慢,但网页的大小和复杂性不断增加,为了完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负担,于是,当时的Netscape公司就决定开发一种客户端语言——LiveScript的脚本语言,而Netscape公司为了搭上媒体热炒的Java的顺风车,就把LiveScript改名为JavaScript。不久后,JavaScript便取得了巨大的成功,与此同时,微软也推出了名为JScript的JavaScript的实现。这样就有了两个不同的JavaScript版本,为了规定标准,欧洲计算机制造商协会(ECMA)定义了一种名为ECMAScript的新脚本语言的标准,而ECMAScript也逐渐成为了JavaScript实现的基础
2.JavaScript的组成
一个完整的JavaScript由以下三个部分组成:
2.1ECMAScript
由ECMA-262定义的ECMAScript与Web浏览器没有依赖关系,它定义了这门语言的基础,而通过Web浏览器这个宿主环境,不仅可以实现ECMAScript,还可以扩展ECMAScript,比如接下来要说的DOM。 以下是ECMAScript的基本组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
1. ECMAScript的版本
- 第一版
本质与Netscape的JavaScript1.1相同,删除了所有针对浏览器的代码
- 第二版
主要是编辑加工的结果,没有做任何新增、修改或删节处理。一般不用第二版来衡量ECMAScript实现的兼容性。
- 第三版
是对该标准第一次真正的修改,内容涉及字符串处理、错误定义和数值输出,还新增了对正则表达式、新控制语句、try-catch异常处理的支持。该版本标志着ECMAScript成为了一门真正的编程语言。
- 第四版
是对该门语言的一次全面的检核修订。第 4版不仅包含了强类型变量、新语句和新数据结构、真正的类和经典继承,还定义了与数据 交互的新方式。 但由于其跨度太大,在发布前就被放弃。
- 第五版
ECMAScript3.1成为了第五版。其澄清了第三版本中的歧义并新添了新功能。新功能包括原生JSON对象(用于解析和序列化JSON数据)、继承的方法和高级属性定义,还包含一种严格模式,对ECMAScript引擎解释和执行代码进行了补充说明。
2. ECMAScript兼容
要想成为ECMAScript的实现,必须做到:
- 支持 ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
- 支持 Unicode字符标准
- 添加 ECMA-262没有描述的“更多类型、值、对象、属性和函数”
- 支持 ECMA-262 没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正 则表达式语法。)
3.Web浏览器对ECMAScript的支持
下表列出了主流Web浏览器对ECMAScript支持的情况:

2.2文档对象模型(DOM)
DOM是针对XML但经过扩展用于HTML的应用程序编程接口(API)。DOM把整个页面映射为一个多层节点结构。如下图所示:
<html>
<head>
<title>Sample Page</title>
</head>
<body> <p>Hello World!</p>
</body> </html>
以上html代码在DOM可显示为:

1.DOM级别
- 一级:
由DOM核心和DOM HTML两个模块组成,DOM核心规定是如何映射基于 XML的文档结构,以便简化对文档中任意部分的访问和操作。DOM HTML 模块则在 DOM 核心的基础上加以扩展,添加了针 对 HTML的对象和方法。
- 二级:
DOM2级在原来DOM的基础上又扩充了鼠标和用户界面事件、范围、遍历(迭代 DOM 文档的方法)等细分模块,而且通过对象接口增加了对 CSS的支持。DOM1级中的DOM核心模块也经过扩展开始支持 XML命名空间。 有下列新模块: + DOM视图:定义了跟踪不同文档视图的接口 + DOM事件:定义了事件和事件处理的接口 + DOM样式:定义了基于 CSS为元素应用样式的接口 + DOM遍历和范围:定义了遍历和操作文档树的接口
- 三级:
- 引入了以统一方式加载和保存文档的方法——在 DOM 加载和保存模块中定义
- 新增了验证文档的方法——在DOM验证模块中定义
- 扩展了DOM核心,开始支持 XML 1.0 规范,涉及 XML Infoset、XPath 和 XML Base。
2.Web浏览器对DOM的支持
下表列出了主流浏览器对DOM标准的支持情况:

2.3浏览器对象模型(BOM)
开发人员使用 BOM可以控制浏览器显示的页面 以外的部分。从根本上讲,BOM只处理浏览器窗口和框架,但人们习惯上也把所有针对浏览器的 JavaScript扩展 算作 BOM的一部分。下面就是一些这样的扩展:
- 弹出新浏览器窗口的功能
- 移动、缩放和关闭浏览器窗口的功能
- 提供浏览器详细信息的 navigator 对象
- 提供浏览器所加载页面的详细信息的 location 对象
- 提供用户显示器分辨率详细信息的 screen 对象
- 对 cookies的支持
- 像 XMLHttpRequest 和 IE的 ActiveXObject 这样的自定义对象