浏览器端的JavaScript组成
ECMAScript
一、ECMAScript 识别两类对象,“本机对象”和“宿主对象”,
1、本机对象的子类别称为“内置对象”(ECMA 262 第三版第 4.3 节)。
2、原生对象属于语言,宿主对象由环境提供,例如可以是文档对象、DOM节点等。
二、本机对象是松散且动态的命名属性包(当涉及内置对象子类别时,某些实现并不是那么动态,尽管通常这无关紧要)。
1、对象的已定义命名属性将保存一个值,该值可能是对另一个对象的引用(函数在这个意义上也是对象)或原始值:字符串、数字、布尔值、Null 或未定义。
2、Undefined 原始类型有点奇怪,因为可以将 Undefined 值分配给对象的属性,但这样做不会从对象中删除该属性;它仍然是一个定义的命名属性,它只保存值undefined。
BOM
一、Browser Object Model, 浏览器对象模型,将浏览器的各个组成部分封装称为对象。
DOM
一、Document Object model 文档对象模型:将标记语言文档的各个组成部分封装为对象。可以使用这些对象对标记语言文档进行CRUD的动态操作。
二、W3C标准中,DOM被分为三个不同的部分
1、核心DOM:针对任何结构化文档的标准模型
2、XML DOM:针对XML文档的标准模型
3、HTML DOM:针对HTML文档的标准模型
BOM和DOM的结构关系示意图
一、通过访问BOM(Browser Object Model)对象来访问、控制、修改客户端(浏览器)。
二、由于BOM的window包含了document,window对象的属性和方法是直接可以使用而且被感知的,因此可以直接使用window对象的document属性,通过document属性就可以访问、检索、修改XHTML文档内容与结构。因为document对象又是DOM(Document Object Model)模型的根节点。可以说,BOM包含了DOM(对象),浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。其中DOM包含:window。从window.document已然可以看出,DOM的最根本的对象是BOM的window对象的子对象。
DOM和BOM区别
一、DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口
1) DOM是W3C的标准[所有浏览器都遵循的标准];
2) DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API);
3) BOM各个浏览器厂商根据DOM在各自浏览器上的实现,表现为不同浏览器定义有差别,实现方式不同;
4) BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括window(窗口)、location(地址栏内容相关)、history(历史)、screen(屏幕)、navigator(有很多浏览器相关的内容,通常判断浏览器类型都是通过这个对象)
二、DOM 是为了操作文档出现的 API,document 是其的一个对象;
BOM 是为了操作浏览器出现的 API,window 是其的一个对象。