优秀的编程知识分享平台

网站首页 > 技术文章 正文

带你走进JavaScript世界系列——window对象和全局作用域

nanyue 2024-10-23 12:12:15 技术文章 4 ℃

ECMAScript 是 JavaScript 的核心,但是如果要在 Web 中使用 JavaScript,那么 BOM(browser object model 浏览器对象模型) 才是真正的核心。BOM 提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。

window 对象

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

全局作用域

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

上面的例子中,在全局作用域中定义了一个变量 age 和 一个函数 sayAge() ,它们会被自动归在了 window 对象上。于是,使用 window.age 和 window.sayAge() 可以访问这个变量和这个函数。

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

使用 var 语句添加的 window 属性有一个名为 [[Configurable]] 的特性,这个特性的值被设置成 false,因此这样定义的属性是不能通过 delete 操作符删除的。IE9 之前的版本在使用 delete 删除 window 属性语句时,不管该属性最初是如何创建的,都会抛出错误。另外,尝试访问未声明的变量会抛出错误,但是通过查询 window 对象,可以知道某个可能未声明的变量是否存在。例:

最近发表
标签列表