JavaScript:一种脚本语言(为网页交互而设计的)
由三部分组成:
1.ECMAScript 由ECMA-262定义 提供核心语言功能
2.DOM 文档对象模型 提供访问和操作网页内容的方法和接口
3.BOM 浏览器对象型 提供与浏览器交互的方法和接口
一、ECMAScript
语言本身不包含输入输出定义
ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript。
web浏览器是ECMAScript实现可能的宿主环境之一。宿主环境提供基本的ECMAScript实现和该语言的扩展,便于语言与环境之间的对接交互。
“ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力……”,ECMAScript不与具体的宿主环境相绑定,如JS的宿主环境是浏览器,AS的宿主环境是Flash
ECMAScript规定了:语法、类型、语句、关键字、保留字、操作符、对象
(注:JS运行环境:宿主环境+执行期环境
宿主环境:由外壳程序生成,如web浏览器,Node,Adobe Flash;
执行期环境:嵌入到外壳程序中的JS引擎(JS解析器)生成的,任何可提供JS引擎执行环境的都可以称为外壳程序)
二、DOM
文档对象模型,是针对XML但经扩展用于HTML的应用程序编程接口。DOM把页面映射为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。可把DOM认为是页面上数据和结构的一个树形。借助DOM提供的API,开发人员就可以删除、添加、替换或修改任何节点。DOM 是这样规定的:整个文档是一个文档节点;每个 HTML 标签是一个元素节点;包含在 HTML 元素中的文本是文本节点;每一个 HTML 属性是一个属性节点。DOM 是遵循 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准。
三、BOM
浏览器对象模型。BOM没有标准,是各个浏览器厂商根据DOM在各自浏览器上的实现。JavaScript是通过访问BOM对象来访问、控制、修改客户端(浏览器)的。window是BOM的根本对象,不是JS对象。由于BOM的window包含了document,可直接用window对象的document属性来访问、检索、修改XHTML文档内容与结构。
window.document document是DOM的根本对象,也就是document对象又是DOM模型的根节点。可理解为BOM包含了DOM。浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而JS操作浏览器以及浏览器读取到的文档。
四、DOM和BOM的关系和区别
关系图:
DOM 是为了操作文档出现的 API,document 是其的一个对象;
BOM 是为了操作浏览器出现的 API,window 是其的一个对象。
归DOM管的:
E区(就是document。由web开发人员写出来的一个文件夹,里面有index.html,CSS和JS,部署在服务器上,我们可以通过浏览器的地址栏输入URL然后回车将这个document加载到本地,浏览,右键查看源代码等)。
归BOM管的:
A区(浏览器的标签页,地址栏,搜索栏,书签栏,窗口放大还原关闭按钮,菜单栏等等)
B区(浏览器的右键菜单)
C区(document加载时的状态栏,显示http状态码等)
D区(滚动条scroll bar)
Window对象包含属性:document、location、navigator、screen、history、frames
Document根节点包含子节点:forms、location、anchors、images、links
从window.document已然可以看出,DOM的最根本的对象是BOM的window对象的子对象。
区别:DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口。
注:Window 对象是 JavaScript 层级中的顶层对象。
Window 对象代表一个浏览器窗口或一个框架。
Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。