一、javascript组成
咱们平时理解的javascript和ECMAScript是一样的东西,相信不少人,包括在开发一线不少年的老司机也容易造成这样的误区。但 JavaScript 的含义却比 ECMA-262 中规定的要多得多。实际上一个完整的javascript是由下图所示的三个不一样的部分组成javascript
图1-1html
二、ECMAscript简介
咱们常见的 Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。宿主环境不只提供基本的ECMAScript 实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如DOM,则利用 ECMAScript 的核心类型和语法提供更多更具体的功能,以便实现针对环境的操做。其余宿主环境包括 Node(一种服务端 JavaScript 平台)和 Adobe Flash。前端
那么该标准规定了什么呢,java
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操做符
- 对象
ECMAScript 就是对实现该标准规定的各个方面内容的语言的描述。 JavaScript 实现了 ECMAScript,Adobe ActionScript 一样也实现了 ECMAScript。浏览器
关于这个标准的由来,缘由是因为早期神仙打架,各大浏览器厂商分别定义了本身的浏览器脚本语言,而后没有一个既定的标准,使得广大前端开发不得不写许多的hack(一些神奇的技巧)来兼容各类浏览器,因此这个标准出现了。固然了,你有你的标准,尊不遵循就是各大浏览器厂商的意思了。那么问题来了,各个浏览器厂商对标准的支持怎么样呢。下表列出了 ECMAScript 受主流 Web 浏览器支持的状况:cookie
总结:显而易见,浏览器版本越高,对标准的支持程度也越高。框架
三、文档对象模型( DOM)
DOM(Document Object Model)是针对XML,可是通过扩展后也能够用于HTML结构解析的API。咱们所能在浏览器上看到的缤纷多彩的网页内容都是能够HTML标签写出,DOM把整个HTML结构映射为多层节点结构。看下面这个HTML片断:spa
<html> <head> <title>Sample Page</title> </head> <body> <p>Hello World!</p> </body> </html>
在 DOM 中,这个页面能够经过图 1-2 所示的分层节点图表示。经过 DOM 建立的这个表示文档的树形图,开发人员得到了控制页面内容和结构的主动权。借助DOM 提供的 API,开发人员能够轻松自如地删除、添加、替换或修改任何节点设计
四、浏览器对象模型( BOM)
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 实现的细节有望朝着兼容性愈来愈高的方向发展
code
五、总结
JavaScript 是一种专为与网页交互而设计的脚本语言,由下列三个不一样的部分组成: ECMAScript,由 ECMA-262 定义,提供核心语言功能; 文档对象模型( DOM),提供访问和操做网页内容的方法和接口; 浏览器对象模型( BOM),提供与浏览器交互的方法和接口。 JavaScript 的这三个组成部分,在当前五个主要浏览器( IE、 Firefox、 Chrome、 Safari 和 Opera)中都获得了不一样程度的支持。其中,全部浏览器对 ECMAScript 第 3 版的支持大致上都还不错,而对ECMAScript 5 的支持程度愈来愈高,但对 DOM 的支持则彼此相差比较多。对已经正式归入 HTML5 标准的 BOM 来讲,尽管各浏览器都实现了某些众所周知的共同特性,但其余特性仍是会因浏览器而异