JavaScript学习 第一章

JavaScript简介

JavaScript诞生于 1995年。当时,它的主要目的是处理以前由服务器端语言(如 Perl)负责的一 些输入验证操作。今天的 JavaScript已经成为一门功能全面的编程语言,能够处理复杂的计算和交互,拥有了闭包、匿名(lamda, 拉姆达)函数,甚至元编程等特性。JavaScript从一个简单的输入验证器发展成为一门强大的编程语言,完全出乎人们的意料。应该说, 它既是一门非常简单的语言,又是一门非常复杂的语言。说它简单,是因为学会使用它只需片刻功夫; 而说它复杂,是因为要真正掌握它则需要数年时间。要想全面理解和掌握 JavaScript,关键在于弄清楚 它的本质、历史和局限性。

JavaScript实现

一个完整的 JavaScript 实现应该由下列三个不同的部分组成:

核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)

JavaScript学习 第一章_第1张图片

1. ECMAScript

ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。 我们常见的 Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。宿主环境不仅提供基本的 ECMAScript 实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如 DOM,则利用 ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他 宿主环境包括 Node(一种服务端 JavaScript平台)和 Adobe Flash。它规定了这 门语言的下列组成部分:

  • 语法

  • 类型

  • 语句

  • 关键字

  • 保留字

  • 操作符

  • 对象

ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。JavaScript实现了 ECMAScript, Adobe ActionScript同样也实现了 ECMAScript。

2. ECMAScript兼容

ECMA-262给出了 ECMAScript兼容的定义。要想成为 ECMAScript的实现,则该实现必须做到:

支持 ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”(ECMA-262 第 1页);

支持 Unicode字符标准。

此外,兼容的实现还可以进行下列扩展:

添加 ECMA-262没有描述的“更多类型、值、对象、属性和函数”。ECMA-262所说的这些新增 特性,主要是指该标准中没有规定的新对象和对象的新属性。

支持 ECMA-262 没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正 则表达式语法。)

上述要求为兼容实现的开发人员基于 ECMAScript开发一门新语言提供了广阔的空间和极大的灵活 性,这也从另一个侧面说明了 ECMAScript受开发人员欢迎的原因。

3. Web浏览器对 ECMAScript的支持

下表列出了 ECMAScript受主流 Web 浏览器支持的情况:


JavaScript学习 第一章_第2张图片

文档对象模型(DOM)

文档对象模型(DOM,Document Object Model)是针对 XML但经过扩展用于 HTML的应用程序编 程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层节点结构。HTML 或 XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。

看下面这个 HTML页面:

Sample Page          
  
  
      

Hello World!

在 DOM中,这个页面可以通过如图所示的分层节点图表示:


JavaScript学习 第一章_第3张图片

1. DOM级别

DOM1级由两个模块组成:DOM 核心(DOM Core)和 DOM HTML。其中,DOM核心规定的是如何映射基于 XML的文档结构,以便 简化对文档中任意部分的访问和操作。DOM HTML 模块则在 DOM 核心的基础上加以扩展,添加了针 对 HTML的对象和方法。

DOM2级在 原来 DOM的基础上又扩充了(DHTML一直都支持的)鼠标和用户界面事件、范围、遍历(迭代 DOM 文档的方法)等细分模块,而且通过对象接口增加了对 CSS(Cascading Style Sheets,层叠样式表)的 支持。DOM1级中的 DOM核心模块也经过扩展开始支持 XML命名空间。 DOM2级引入了下列新模块,也给出了众多新类型和新接口的定义。 DOM视图(DOM Views):定义了跟踪不同文档(例如,应用 CSS之前和之后的文档)视图的 接口;

DOM事件(DOM Events):定义了事件和事件处理的接口;

DOM样式(DOM Style):定义了基于 CSS为元素应用样式的接口;

DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口。

DOM3 级则进一步扩展了 DOM,引入了以统一方式加载和保存文档的方法——在 DOM 加载和保 存(DOM Load and Save)模块中定义;新增了验证文档的方法——在 DOM验证(DOM Validation)模块中定义。DOM3 级也对 DOM 核心进行了扩展,开始支持 XML 1.0 规范,涉及 XML Infoset、XPath 和 XML Base。

2. 其他 DOM标准

除了 DOM核心和 DOM HTML接口之外,另外几种语言还发布了只针对自己的 DOM标准。下面 列出的语言都是基于 XML的,每种语言的 DOM标准都添加了与特定语言相关的新方法和新接口:

  • SVG(Scalable Vector Graphic,可伸缩矢量图)1.0;

  • MathML(Mathematical Markup Language,数学标记语言)1.0;

  • SMIL(Synchronized Multimedia Integration Language,同步多媒体集成语言)。

还有一些语言也开发了自己的 DOM实现,例如 Mozilla的 XUL(XML User Interface Language,XML 用户界面语言)。但是,只有上面列出的几种语言是 W3C的推荐标准。

3. Web浏览器对 DOM的支持

JavaScript学习 第一章_第4张图片

浏览器对象模型(BOM)

Internet Explorer 3和 Netscape Navigator 3有一个共同的特色,那就是支持可以访问和操作浏览器窗 口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用 BOM可以控制浏览器显示的页面 以外的部分。而 BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为 JavaScript实现 的一部分但却没有相关的标准。这个问题在 HTML5中得到了解决,HTML5致力于把很多 BOM功能写 入正式规范。HTML5发布后,很多关于 BOM的困惑烟消云散.

从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 JavaScript扩展 算作 BOM的一部分。下面就是一些这样的扩展:

  • 弹出新浏览器窗口的功能;

  • 移动、缩放和关闭浏览器窗口的功能;

  • 提供浏览器详细信息的 navigator 对象;

  • 提供浏览器所加载页面的详细信息的 location 对象;

  • 提供用户显示器分辨率详细信息的 screen 对象;

  • 对 cookies的支持;

  • 像 XMLHttpRequest 和 IE的 ActiveXObject 这样的自定义对象。

JavaScript版本

下表列出了 Netscape/Mozilla 浏览器中 JavaScript版本号的递增过程:


JavaScript学习 第一章_第5张图片

你可能感兴趣的:(JavaScript学习 第一章)