客户端JavaScript
Windows对象是所有客户端JavaScript特性和API的主要接入点。它表示Web浏览器的一个窗口或窗体,并且可以用标识符window来引用它。
Window对象定义了一些属性,比如,Location对象 —— location,Location对象指定当前显示在窗口中的URL。例如:
window.location = "http://www.web.com";
WIndow对象还定义了一些方法,比如alert(),可以弹出一个对话框来显示一些信息,还有setTimeOut(),可以注册一个函数,在给定的一段时间之后触发一个回调;例如:
setTimeOut(function(){... ...}, 2000);
上面的代码没有显式的使用window属性,在客户端JS中,Window对象也是全局对象。这意味着WIndow对象处于作用域链的顶部,它的属性和方法实际上是全局变量和全局函数。Window对象有一个引用自身的属性,叫做window,如果需要引用窗口对象本身,可以使用这个属性,但是如果只是想要引用全局窗口对象的属性,通常并不需要用到window。
Window对象中其中一个最重要的属性是document,它引用Document对象,后者表示显示在窗口中的文档。例如:
var timestamp = document.getElementById("timestamp");
getElementById()返回的Element对象有其他重要的属性和方法,如style和className属性,允许脚本指定文档元素的CSS样式,或修改应用到元素上的CSS类名。
Window,Document和Element对象上另一个重要的属性集合是事件处理程序相关的属性。可以在脚本中为之绑定一个函数,这个函数会在某个事件发生时以异步的方式调用。事件处理程序的属性名是以单词 on 开始的;例如:
timestamp.onclick = function() {... ...}
Window对象的onload处理程序是最最要的事件处理程序之一,当显示在窗口中的文档内容稳定并可以操作时会触发它。JS代码通常封装在onload事件处理程序里。
例如:
<script>
window.onload = function() {
var elements = document.getElementByClassName("reveal");
for (... ...){
... ...
}
};
</script>
Web文档里的JavaScript
JS程序可以通过Document对象和包含的Element对象遍历和管理文档内容。
它可以通过操纵CSS样式和类,修改文档内容的呈现,并且可以通过注册适当的事件处理程序来定义文档元素的行为。
Web应用里的JavaScript
谨记Web浏览器是简单操作心痛的概念,这样就可以把Web应用程序定义为用JavaScript访问更多浏览器提供的高级服务(比如网络,图像和数据存储)的Web页面。
高级服务里最有名的XMLHttpRequest对象,后者可以对HTTP请求编程来启用网络,Web应用使用这个服务从服务器获取信息,而不用重新载入页面。类似这样的Web应用通常叫做Ajax应用。
HTML5标准和相关的标准为Web应用定义了很多其他重要的API。这些API包括数据存储,图像API,地理位置信息,历史管理和后台线程等。
JavaScript在Web应用里会比在Web文档里显得更加重要。JS增强了Web文档,但是设计良好的文档需要在禁用JS后还能继续工作。Web本质上就是JS程序,后者使用由Web浏览器提供的操作系统类型的服务,并且不用期望它们在禁用浏览器脚本后还能正常工作。