BOM 基本结构层次
BOM(Browser Object Model)浏览器对象模型
- 主要功能:BOM 的主要功能是操作 HTML 内容之外的一些信息,为了实现 javascript 与浏览器之间的“对话”,比如新建窗口、Cookie 设置、浏览器版本信息的显示、浏览器窗口宽高的显示等。
- 对象集合:浏览器对象模型是一个集合,包含了诸多能够对浏览器信息进行操作的对象(比如 navigator 对象、screen 对象、history 对象、location 对象等),但 BOM 的核心是 window 对象,当用户打开浏览器窗口,这个 window 对象就随之而产生,如果 HTML 页面中包含有
<iframe>
<frame>
标签时候,对为每一个<iframe>
<frame>
标签创建一个独立的 window 对象。navigator 对象、screen 对象、history 对象、location 对象等都是 window 的子对象。
BOM 基本语法 - window 对象
window 对象是全局对象,所有在全局作用域中声明的变量、对象、函数都会变成 window 对象的属性、对象、方法。
HTML DOM 的 document 也是 window 对象的属性之一:window.document.getElementById("header");
等同于:document.getElementById("header");
由此,我们可以明确规律:
- 全局变量 是 window 对象的属性。
- 全局函数 是 window 对象的方法。
基于 window 对象是全局对象的概念,它下属的所有全局变量和函数都是它的属性,并且所有原生的构造函数及其它函数都存在与它的命名空间下,因此,在调用 window 对象的方法和属性时,可以省略 window 对象的引用。但在局部作用域中定义不会归入 window 对象名下,只有在全局作用域中定义才会被自动归入到 window 对象名下。
<script>
var NameNew="Hevate"; //定义变量
var ArrNew=new Array("one","two","three"); //定义对象
function MyName(){ // 定义函数,不会直接执行,需要经过调用
var NameNew = "liu"
console.log("因为 MyName() 函数存在于全局作用域中,所以 this 被映射到 window,this.MyName 即是 window.MyName")
console.log("MyName() 不加上 window 或 this:"+NameNew)
console.log("MyName() 加上 this:"+this.NameNew)
console.log("MyName() 加上 window:"+window.NameNew)
}
/* 输出变量*/
window.console.info("对于变量,加上 window 输出:"+NameNew) //输出 Hevate
console.info("对于变量,不加 window 同样输出:"+NameNew)
/* 输出对象*/
window.console.log("对于对象,加上 window 输出:"+ArrNew) //输出 one,two,three
console.log("对于对象,加上 window 输出结果相同:"+ArrNew)
/* 输出函数*/
window.MyName() //调用 函数 MyName()
MyName() //调用 函数 MyName()
</script>
因为 MyName() 函数存在于全局作用域中,所以 this 被映射到 window,this.MyName 即是 window.MyName
Reference