标签:
一个完整的javascript应该由三部分组成:ECMAScript、BOM、DOM
ECMAScript
ECMAScript提供核心功能,DOM提供访问和操作网页内容的方法和接口,BOM提供与浏览器交互的方法和接口。
由ECMA-262定义的ECMAscript与web浏览器没有依赖关系。实际上,这门语言并不包含输入和输出定义。ECMA-262定义的只是这门语言的基础,而在此基础上可以构建更完善的脚本语言。我们常见的web常见浏览器只是ECMAScript实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAscript实现,同时也会提供该语言的扩展,以便语言与环境之间对接。而这些扩展,如DOM,则利用ECMASCRIPT的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括Node(一种服务端平台javascript)和Adobe flash.
既然ECMA-262标准没有参照web浏览器,那他都规定了什么内容呢?大致来说,他都规定了这门语言的下列组成部分:
语法
类型
语句
关键字
保留字
操作符
对象
ECMAscript就是对实现该标准对应的各个方面内容的语言描述。javascript实现了ECMAscipt,Adobe ActionScript同样也实现了ECMAscript.
DOM
文档对象模型是针对XML但经过扩展用于HTML的应用程序接口。DOM把整个页面映射成为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
浏览器对象模型BOM
Internet 3 和 Netscape Navigator3 有一个共同的特色,那就是支持可以访问和操作浏览器窗口的浏览器对象模型BOM。开发人员可以用BOM控制浏览器页面以外的部分。而BOM真正与众不同的地方(也是会经常导致问题的地方)就是她做为javascript实现的一部分,但是却没有相关的标准。这个问题在HTML5中得到了解决。HTML5致力于把很多BOM功能写入正式规范。HTML5发布后,很多关于BOM的问题就会烟消云散。
从根本上讲,BOM只处理浏览器窗口和框架。但人们习惯也把所有针对浏览器的扩展也算做BOM的一部分。例如:
弹出新浏览器窗口的功能。
移动,缩放,关闭浏览器窗口的功能
提供浏览器详细信息的Navigator对象。
提供浏览器所加载页面详细信息的location对象
提供用户显示器分辨率详细信息的screen对象
对cookies的支持
像XMLHTTPRequest对象和IE的ActiveXObject对象
由于没有BOM标准没有可以遵循的,所以每个浏览器都有自己的实现方式,虽然也存在一些事实标准比如都有window对象和navigator对象等,但每个浏览器都会这两个对象及其他对象定义自己的属性和方法。现在有了HTML5,BOM有望朝着兼容性越来越高的方向发展。
javascript组成的这三个部分,在当今这些浏览器中(IE 、FF、chrome 、safari、Opera)中都得到了不同的支持。其中,所有浏览器对ECMAscript的支持都还不错,对DOM的支持则彼此相差比较多,对HTML5正式纳入标准的BOM来说,尽管各个浏览器都实现了某些总所周知的特性,但其他特性还是会因浏览器而异。
标签:
原文地址:http://www.cnblogs.com/sandraBlog/p/javascript_jianjie.html