JavaScript高级程序设计(第一章)

目录

 

1.JavaScript简介

 1.1JavaScript历史回顾

历史进程:

1.2ECMA和ECMASrcipt

 1.3JavaScript实现

 1.3.1 ECMAScript

1.3.2什么是 ECMAScript兼容 ?

1.3.3各大浏览器对ECMA的兼容

1.4DOM

1.4.1DOM级别

1.4.2 Web浏览器对 DOM的支持 

1.5BOM浏览器对象模型


1.JavaScript简介

 1.1JavaScript历史回顾

JavaScript诞生于 1995年。当时,它的主要目的是处理输入验证操作。在 JavaScript 问世之前,必须把表单数据发送到服务器端才能确定用户是否 没有填写某个必填域,是否输入了无效的值。Netscape Navigator希望通过 JavaScript来解决这个问题。 

如今,JavaScript的用途早 已不再局限于简单的数据验证,而是具备了与浏览器窗口及其内容等几乎所有方面交互的能力。 

历史进程:

Netscape公司为Navigator浏览器开发的的liveScript语言,

为了搭上Sun公司java语言(媒体热炒)的顺风车,改名为JavaScript。

微软的浏览器(IE)为了和Navigator浏览器竞争,向自家浏览器加入了名为Jscript(与JavaScript区分)的脚本语言。

Netscape的JavaScript,微软的JScript。

1.2ECMA和ECMASrcipt

ECMA(协会):欧洲计算机制造商协会(European Computer Manufacturers Association)。该协会指定 39号技术委员会(TC39,Technical Committee #39) 负责“标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义”。

ECMA-262(标准):——定义一种名为 ECMAScript(发 音为“ek-ma-script”)的新脚本语言的标准。

 ECMAScript(脚本语言):是一种由ECMA通过ECMA-262标准化的脚本程序设计语言

ECMAScript是JavaScript的核心,而不是JavaScript的全部。

 1.3JavaScript实现

虽然 JavaScript 和 ECMAScript 通常都被人们用来表达 相同的含义,但 JavaScript的含义却比 ECMA-262中规定的 要多得多。没错,一个完整的 JavaScript 实现应该由下列三 个不同的部分组成(见图 1-1)。

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

 1.3.1 ECMAScript

ECMA-262(一个标准)定义的 ECMAScript与 Web 浏览器没有依赖关系。这门语言本身并不包含输 入和输出定义。ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。 

Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。

宿主环境提供了:

1.基本的 ECMAScript 实现   

2.该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如 DOM,则利用 ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他 宿主环境包括 Node(一种服务端 JavaScript平台)和 Adobe Flash。

既然 ECMA-262 标准没有参照 Web 浏览器,那它都规定了些什么内容呢?

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

ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。

JavaScript实现了 ECMAScript, Adobe ActionScript同样也实现了 ECMAScript。 

1.3.2什么是 ECMAScript兼容 

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

  •  支持 ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
  •  支持 Unicode字符标准。 此外,兼容的实现还可以进行下列扩展。
  •  添加 ECMA-262没有描述的“更多类型、值、对象、属性和函数”。ECMA-262所说的这些新增 特性,主要是指该标准中没有规定的新对象和对象的新属性。
  •  支持 ECMA-262 没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正 则表达式语法。)

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

1.3.3各大浏览器对ECMA的兼容

到了 2008年,五大主流 Web 浏览器(IE、Firefox、Safari、Chrome和 Opera)全部做到了与 ECMA-262兼容。IE8是第一个着手实现 ECMA-262第 5版的浏览器,并在 IE9中提供了完整的支持。Firefox 4也 紧随其后做到兼容

1.4DOM

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

通过 DOM 创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助 DOM提供的 API,开发人员可以轻松自如地删除、添加、替换或修改任何节点。 

如果想继续保持 Web 跨平台的天性,就必须额外多做一些工作。而人们真正担 心的是,如果不对 Netscape和微软加以控制,Web 开发领域就会出现技术上两强割据,浏览器互不兼容的局面。此时,负责制定 Web 通信标准的 W3C(World Wide Web Consortium,万维网联盟)开始着 手规划 DOM。 

1.4.1DOM级别

DOM1级(DOM Level 1)于 1998年 10月成为 W3C的推荐标准

DOM1级由两个模块组成:DOM 核心(DOM Core)和 DOM HTML。其中,DOM核心规定的是如何映射基于 XML的文档结构,以便 简化对文档中任意部分的访问和操作。DOM HTML 模块则在 DOM 核心的基础上加以扩展,添加了针 对 HTML的对象和方法。 
请读者注意,DOM并不只是针对 JavaScript的,很多别的语言也都实现了 DOM。 不过,在 Web浏览器中,基于 ECMAScript实现的 DOM的确已经成为 JavaScript这 门语言的一个重要组成部分。 
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。 

1.4.2 Web浏览器对 DOM的支持 

目前,支持 DOM已经成为浏览器开发商的首要目标,主流浏览器每次发布新版本都会改进对 DOM 的支持。下表列出了主流浏览器对 DOM标准的支持情况。 

1.5BOM浏览器对象模型

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 这样的自定义对象。

由于没有 BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如 要有 window 对象和 navigator 对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属 性和方法。现在有了 HTML5,BOM实现的细节有望朝着兼容性越来越高的方向发展。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值