什么是JavaScript
javascript是一种专为与网页交互而设计的脚本语言。
- ECMAScript,由ECMA-262定义,提供核心的语言功能
- 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
- 浏览器对象模型(BOM),提供与浏览器交互的方法和接口
ECMAScript
由ECMA-262定义的ECMAScript与web浏览器没有依赖关系。实际上这门语言本身并不包含输入和输出的定义。ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。我们常见的web浏览器只是ECMAScript实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便语言与环境之间的对接交互。而这些扩展--如DOM,则利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括Node(一种服务端javascript平台)和Adobe Flash。
ECMA-262标准规定了一下组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
ECMAScript就是对实现该标准规定的各个方面内容的语言的描述。javascript实现了ECMAScript,Adobe ActionScript同样也实现了ECMAScript.
文档对象模型(DOM)
DOM(Document Object Model)是针对xml但经过扩展用于html的应用程序编程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层节点结构。html或xml页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
通过DOM创建的树形图,开发者获得了控制页面内容和结构的主动权。借助DOM提供的API,开发者可以删除、添加、替换或修改任何节点。
浏览器对象模型(BOM)
开发者使用BOM可以控制浏览器显示的页面以外的部分。而BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为javascript实现的一部分但却没有相关的标准。这个问题在HTML5中得到了解决,HTML5致力于把很多BOM功能写入正式规范。HTML5发布后,很多关于BOM的困惑烟消云散。
从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的javascript扩展算作BOM的一部分。example:
- 弹出新浏览器窗口的功能;
- 移动、收缩、关闭浏览器窗口的功能;
- 提供浏览器详细信息的navigator对象;
- 提供浏览器所加载页面的详细信息的location对象;
- 提供用户显示器分辨率详细信息的screen对象;
- 对cookies 的支持;
- 向XMLHttpRequest 和 IE的ActionXObject这样自定义的对象。
由于没有BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如要有window对象和navigator对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属性和方法。现在有了HTML5,BOM实现的细节有望朝着兼容性越来越高的方向发展。