1.1 Javascript是什么?
Javascript是一门功能全面的编程语言,能够处理复杂的计算与交互,拥有闭包、匿名函数,甚至元编程等特性。
1.2 JavaScript实现
虽然javascript和ECMAScript通常被人们用来表达相同的含义,但Javascript的含义却比ECMA-262中规定的更多。
一个完整的JavaScript实现应该包括下列三个不同的组成部分:
1. 核心(ECMAScript)提供核心语言功能
2. 文档对象模型(DOM)//Document Object Model提供访问和操作页面内容的方法和接口
3. 浏览器对象模型(BOM)//Browser Object Model 提供与浏览器交互的方法和接口
ECMAScript规定了这门语言下列的组成部分:
a) 语法
b) 类型
c) 语句
d) 关键字
e) 保留字
f) 操作符
g) 对象
1.3 DOM文档对象模型
文档对象模型(DocumentObject Model)是针对XML但经过扩展用于HTML的应用编程接口(API,Application Progamming Interface)。DOM把整个页面映射为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点包含着不同类型的数据。
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
通过DOM创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助DOM 提供的API,开发人员可以轻松自如地删除、添加、替换或修改任何节点。
1.4 BOM 浏览器对象模型
Internet Explorer3 和Netscape Navigator 3 有一个共同的特色,那就是支持可以访问和操作浏览器窗口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用BOM 可以控制浏览器显示的页面以外的部分。而BOM 真正与众不同的地方(也是经常会导致问题的地方),还是它作为JavaScript 实现的一部分但却没有相关的标准。这个问题在HTML5 中得到了解决,HTML5 致力于把很多BOM 功能写入正式规范。HTML5 发布后,很多关于BOM 的困惑烟消云散。
从根本上讲,BOM 只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的JavaScript 扩展算作BOM的一部分。下面就是一些这样的扩展:
a) 弹出新浏览器窗口的功能;
b) 移动、缩放和关闭浏览器窗口的功能;
c) 提供浏览器详细信息的navigator 对象;
d) 提供浏览器所加载页面的详细信息的location 对象;
e) 提供用户显示器分辨率详细信息的screen 对象;
f) 对cookies 的支持;
g) 像XMLHttpRequest 和IE 的ActiveXObject这样的自定义对象。
由于没有BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如要有window 对象和navigator 对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属性和方法。现在有了HTML5,BOM 实现的细节有望朝着兼容性越来越高的方向发展。