关闭页面特效

BOM详解

1.WINDOW对象

 

BOM的核心对象是WINDOW,它表示一个浏览器的实例。在浏览器中,window对象有双重角色,它既是通过

 

JavaScript访问浏览器的一个接口,又是ECMAScript规定的Global对象。这意味着,在网页中定义任意一个对象,变量和函数,都以WINDOW作为其Global对象,因此有权访问parseInt()等方法。

 

 

 

1.1全局作用域

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

 

var age=22; function sayAge() { alert(this.age); } alert(window.age); //22 sayAge(); //22 window.sayAge(); //22
View Code

   我们在全局作用域中定义了一个变量age和一个函数sayAge(),它们被自动归在了window对象名下。于是,可以通过window.age访问变量age.可以通过window.sayAge()访问函数sayAge().由于sayAge()存在于全局作用域中,因此this.age被映射到window.age,最终显示的仍然是正确的结果。

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

例如:

var age=44; window.color="red"; delete window.age; delete.window.color; alert(window.age); //44 alert(window.color); //undefined
View Code

   刚才使用var语句添加的window属性有一个名为[[configurable]]的特性,这个特性的值被设置为false,因此这样定义的属性不可以通过delete操作符删除。IE8以及更早版本在遇到使用delete删除window属性的语句时,不管该属性是如何创建的,都会抛出错误,以示警告。IE9以及更高版本不会抛出错误。

  另外,还要记住一件事:尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在,例如:

1
2
3
4
5
//这里会抛出错误,因为oldValue未定义
var newValue=oldValue;
 
//不会抛出错误,这是一次属性的查询,newValue的值是undefined
var newValue=window.oldValue;

 注意:Window Moblie 平台的IE浏览器,不允许通过window.prototype=value之类的形式

直接在window对象上创建新的属性或方法。可是,在全局作用域中声明的所有变量和函数,照样会变成WINDOW对象的成员。

 

 


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/3738544.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(508)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
1
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示