四时宝库

程序员的知识宝库

JavaScript中的BOM和window对象(js中的window对象是什么)

BOM

ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(浏览器对象模型)则无疑才是真正的核心。BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。多年来,缺少事实上的规范导致BOM既有意思又有问题,因为浏览器提供商会按照各自的想法随意去扩展它。于是,浏览器之间共有的对象就成为了事实上的标准。这些对象在浏览器中得以存在,很大程度上是由于它们提供了与浏览器的互操作性。W3C为了把浏览器中JavaScript最基本的部分标准化,已经把BOM的主要方便纳入了HTML5的规范中。

window对象

BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其Global对象。

全局作用域

由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中生命的变量、函数都会变成window对象的属性和方法。如下:

var age = 29;
function sayAge(){
	console.log(this.age);
}
console.log(window.age);	//29
sayAge();					//29
window.sayAge();			//29

抛开全局变量会成为window对象的属性不谈,定义全局变量与在window对象上直接定义属性还是有一点差别:全局变量不能通过delete操作符删除,而直接在window对象上的定义的属性则可以。如下:

var age = 29;
window.color = "red";
delete age;
delete window.color;
console.log(age);	//29
console.log(window.color);	//undefined

尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。如下:

var newValue = oldValue;	//ReferenceError: oldValue is not defined
var newValue = window.oldValue;

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接