【阅读笔记】JavaScript 高级程序设计(一)

JavaScript 简史

JavaScript 诞生于 1995 年,是由 Netscape(网景)公司的 Brendan Eich(布兰登·艾奇)为计划于 1995 年 2 月发布的 Netscape Navigator 2 开发的一种名为 LiveScript 的脚本语言。

为了赶在计划工期前完成,Netscape 与 Sun 公司成立了开发联盟。Netscape 为了搭上媒体炒作 Java 的顺风车,将 LiveScript 临时更名为 JavaScript。

Netscape(网景)在 Netscape Navigator 3 中发布了 JavaScript 1.1 不久,微软在其 Internet Explorer 3 中加入了名为 JScript 的 JavaScript 的实现。

随着微软推出其 JScript 实现意味着有了 3 个不同的 JavaScript 版本:Netscape Navigator 中的 JavaScript、Internet Explorer 中的 JScript 以及 CEnvi 中的 ScriptEase。在当时并没有标准规定 JavaScript 的语法和特性,3个不同版本的局面也暴露了很多问题。

1997 年,以 JavaScript 1.1 为蓝本的建议提交给了欧洲的计算机制造商协会,该协会指定 TC39(由 Netscape、Sun、微软、Borland 及其他关注脚本发展公司的程序员组成) 负责完成了 ECMA-262 定义了一种名为 ECMAScript 新脚本语言标准。

第二年,ISO/IEC(国标标准化组织和国际电工委员会)也采用了 ECMAScript 作为标准(即 ISO/IEC-16262),自此浏览器开发商致力于将 ECMAScript 作为各自 JavaScript 实现的基础。

JavaScript 实现

一个完整的 JavaScript 由以下三个不同的部分组成:

ECMAScript

由 ECMA-262 定义的 ECMAScript 与 Web 浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出的定义,它只是这门语言的基础。

ECMA-262 标准规定了这门语言以下的组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

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

ECMAScript 各个版本与实现功能

  • ECMAScript 1 发布于 1997 年,其本质上于 Netscape 的 JavaScript 1.1 相同,只不过删除了所有针对浏览器的代码并作了一些小改动:ECMA-262 要求支持 Unicode 编码,而且对象也变成了平台无关的。

  • ECMAScript 2 发布于1998年6月,主要是编辑加工的
    结果。这一班中内容的更新是为了与 ISO/IEC-16262 保持严格的一致,没有作任何新增、修改或删除的处理。因此,一般不使用第2版来衡量 ECMAScript 实现的兼容性。

  • ECMAScript 3 发布于1999年12月,对标准版第一次真正的修改,修改的内容涉及字符串处理、错误定义和数值输出。这一版中还增加了对正则表达式、新控制语句、try-catch 异常处理的支持,并围绕标准的国际化做出了一些小的修改。第 3 版标志着 ECMAScript 成为了一门真正的编程语言。

  • ECMAScript 4 未发布,对这门语言进行了一次全面的检核修订,出台的标准几乎在第 3 版基础上完全定义了一门新的语言。第 4 版中不仅包含了强类型变量、新语句和新数据结构、真正的类和经典继承。还定义了于数据交互的新放方式。由于对这门语言的跨度较大,因此放弃了正式版的发布。

  • ECMAScript 5 发布于2009年12月3日正式发布。力求澄清第 3 版中已知的歧义并增添了新的功能。新功能包括原生 JSON 对象(用于解析和序列化JSON数据)、继承的方法和高级属性的定义。另外还包含了一种严格模式,对 ECMAScript 引擎解释和执行代码进行补充说明。

ECMAScript 兼容

ECMAScript 兼容定义,必须实现:
- 支持 ECMA-262 中描述的所有 “类型、值、对象、属性、函数以及程序语法和语义”。

  • 支持 Unicode 字符标准。

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

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

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

文档对象模型(DOM)

文档对象模型(DOM,Document Object Model)是针对 XML 但经过扩展用于 HTML 的应用程序编程接口(API,Application Programming Interface)。DOM 把整个页面映射为一个多层节点结构,开发人员可以通过 DOM 提供的 API 轻松的增加、修改、删除、替换等操作任何节点。

DOM 级别

  • DOM1 级于1998年10月成为W3C的推荐标准,由两个模块组成:DOM 核心(DOM Core)和 DOM HTML。其中 DOM 核心规定是入河映射基于XML的文档结构,简化对文档中任意部分的访问和操作。DOM HTML 模块则在 DOM 核心的基础上加以扩展,添加了针对 HTML 的对象和方法。

  • DOM2 级中引入了下列新模块,也给出了众多新类型和新接口的定义:

    • DOM 视图(DOM Views):定义了跟踪不同文档(如:应用 CSS 之前和之后的文档)视图接口;
    • DOM 事件(DOM Events):定义了事件和事件处理的接口;
    • DOM 样式(DOM Style):定义了基于 CSS 为元素应用样式的接口;
    • DOM 遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口。
  • DOM3 级引入了以统一方式加载和保存文档的方法 以及验证文档的方法。并且 DOM3 级也对 DOM 核心进行了扩展,开始支持 XML 1.0规范,涉及 XML Infoset、XPath 和 XML Base。

浏览器对象模型(BOM)

BOM 只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的 JavaScript 扩展算作 BOM 的一部分。如:

  • 弹出新浏览器窗口的功能
  • 移动、缩放和关闭浏览器窗口的功能
  • 提供浏览器详细信息的 navigator 对象
  • 提供浏览器所加载页面的详细信息 location 对象
  • 提供用户显示器分辨率详细信息的 screen 对象
  • 对 cookie 的支持
  • 像 XMLHttpRequest 和 IE 的 ActiveXObject 这样的自定义对象。

由于没有 BOM 标准可遵循,因此每个浏览器都有自己的实现。现在 HTML5 对 BOM 实现的细节有望朝着兼容性越来越高的方向发展。

小结

JavaScript 是一种专为鱼网页交互而设计的脚本语言,是由以三个不同的部分组成:

  • ECMAScript,由 ECMA-262 定义,提供核心语言功能;
  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
  • 浏览器对象模型(BOM),提供与浏览器交互的方法和接口

猜你喜欢

转载自blog.csdn.net/hvkcoder/article/details/78425214