TanXinNiao / blog

贪心鸟的博客
0 stars 0 forks source link

JavaScript高级程序设计(第4版)第一章 什么是JavaScript #20

Open TanXinNiao opened 3 years ago

TanXinNiao commented 3 years ago

虽然JavaScript和ECMAScript基本上是同义词,但JavaScript远远不限于ECMA-262所定义的那样。 没错,完整的 JavaScript 实现包含以下几个部分:  核心(ECMAScript)  文档对象模型(DOM)  浏览器对象模型(BOM)

TanXinNiao commented 3 years ago

JavaScript 实现

DOM

文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML 中使 用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种 节点,包含不同的数据

DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API, 可以轻松地删除、添加、替换、修改节点。

注意 DOM 并非只能通过 JavaScript 访问,而且确实被其他很多语言实现了。不过对于浏 览器来说,DOM就是使用 ECMAScript 实现的,如今已经成为 JavaScript 语言的一大组成 部分。

DOM Level 1 的目标是映射文档结构,而 DOM Level 2 的目标则宽泛得多。这个对最初 DOM 的扩 展增加了对(DHTML 早就支持的)鼠标和用户界面事件、范围、遍历(迭代 DOM 节点的方法)的支 持,而且通过对象接口支持了层叠样式表(CSS)。另外,DOM Level 1 中的 DOM Core 也被扩展以包含 对 XML 命名空间的支持。

DOM Level 2 新增了以下模块,以支持新的接口。  DOM 视图:描述追踪文档不同视图(如应用 CSS 样式前后的文档)的接口。  DOM 事件:描述事件及事件处理的接口。  DOM 样式:描述处理元素 CSS 样式的接口。  DOM 遍历和范围:描述遍历和操作 DOM树的接口。

TanXinNiao commented 3 years ago

BOM

IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗 口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM真正独一无二的地方,当然也是 问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。HTML5 改变了这个局面,这个版 本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM 有关的问题都迎刃而解了。 总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的 扩展都归在 BOM的范畴内。比如,下面就是这样一些扩展:  弹出新浏览器窗口的能力;  移动、缩放和关闭浏览器窗口的能力;  navigator 对象,提供关于浏览器的详尽信息;  location 对象,提供浏览器加载页面的详尽信息;  screen 对象,提供关于用户屏幕分辨率的详尽信息;  performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;  对 cookie 的支持;  其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject 。

TanXinNiao commented 3 years ago

小结

JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。  ECMAScript:由 ECMA-262 定义并提供核心功能。  文档对象模型(DOM):提供与网页内容交互的方法和接口。  浏览器对象模型(BOM):提供与浏览器交互的方法和接口。

JavaScript 的这三个部分得到了五大 Web 浏览器(IE、Firefox、Chrome、Safari 和 Opera)不同程度 的支持。所有浏览器基本上对 ES5(ECMAScript 5)提供了完善的支持,而对 ES6(ECMAScript 6)和 ES7(ECMAScript 7)的支持度也在不断提升。这些浏览器对 DOM 的支持各不相同,但对 Level 3 的支 持日益趋于规范。HTML5 中收录的 BOM 会因浏览器而异,不过开发者仍然可以假定存在很大一部分 公共特性。