8.6 Summary
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时window对象还是ECMAScript中的Global对象,因而所有全局变量和函数都是它的属性,且所有原生的构造函数及其他函数也都存在于它的命名空间下。本章讨论了下列BOM的组成部分。
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时window对象还是ECMAScript中的Global对象,因而所有全局变量和函数都是它的属性,且所有原生的构造函数及其他函数也都存在于它的命名空间下。本章讨论了下列BOM的组成部分。
history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。因为history是window对象的属性,因此每个浏览器窗口、每个标签页乃至每个框架,都有自己的history对象与特定的window对象关联。出于安全的考虑,开发人员无法得知用户浏览过的URL。不过,借由用户访问过的页面列表,同样可以在不知道实际URL的情况下实现后退和前进。
screen对象基本上只用于表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器中的screen对象都包含着各不相同的属性,下表列出了所有属性及支持相应属性的浏览器。
最早由Netscape Navigator 2.0 引入的navigator对象,现在已经成为识别客户端浏览器的事实标准。虽然其他浏览器也通过其他方式提供了相同或者相似的信息(例如,IE中的window.clientInformation和Opera中的window.opera),但navigator对象却是所有支持JavaScript的浏览器所共有的。
location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。
ECMAScript是JavaScript的核心,但如果在要在web中使用JavaScript,那么BOM(Browser Object Model浏览器对象模型)则是真正的核心。
在JavaScript编程中,函数表达式是一种非常有用的技术。使用函数表达式可以无须对函数命名,从而实现动态编程。匿名函数,也称为拉姆达函数( Lambda λ) ,是一种使用JavaScript函数的强大方式。
严格来讲,JavaScript没有私有成员的概念;所有对象属性都是公有的。不过,倒是有一个私有变量的概念。任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。
JavaScript没有块级作用域的概念。这意味着在块级语句中定义的变量,实际上是在包含函数中而非语句中创建的。
递归是在一个函数调用自身的情况下构成的
本章内容
ES支持面向对象编程,但不使用类或者接口。对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体。
实现继承一般有两种方法:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。ES里面没有重载,函数没有签名,所以只支持实现继承。