Javascript window对象详解


Posted in Javascript onNovember 12, 2014

首先看我们的源代码。

<!DOCTYPE html>  

<html>  

    <head>  

        <meta charset="utf-8" />  

        <title>深入理解Javascript</title>  

        <script type="text/javascript" charset="utf-8">  

            console.log(this);  

        </script>  

    </head>  

    <body>  

        <h1>深入理解Javascript</h1>  

    </body>  

</html>

我们知道,通过浏览器打开这个页面,包含在<script> </script>标签中的 脚本会被执行,

那我们看一下 console.log(this); 这个this 到底指向的是谁呢?

在Google Chrome 中我们看到:

Javascript window对象详解

在Mozilla Firefox 中我们看到:

Javascript window对象详解

我们都看到输出的Window,那这个Window 与window是不是相等呢?

接着我们的测试

<script type="text/javascript" charset="utf-8">  

    console.log(this);  

    console.log('this == window ? ', this == window);   

</script> 

运行代码,输出this == window ?true ,这说明 Window== window,真的是这样吗?

为了搞清楚它们之间的关系,我们又接着测试

<script type="text/javascript" charset="utf-8">  

    console.log('this = ', this);  

    console.log('this == window ?', this == window);  

    console.log('window = ', window);  

    console.log('Window = ', Window)  

    console.log('Window == window ?', Window == window)  

</script>

看浏览器输出:

Google Chrome :

Javascript window对象详解
Mozilla Firefox :

Javascript window对象详解

从输出结果我们可以推出,

this是指向Window对象;

this也等于window对象;

window也是指向Window对象;

Window是指向Window{},是浏览器提供的对象;

Window不等于window;

为什么会这样呢?

我们在浏览器控制台中查看Window对象的结构;

Javascript window对象详解

Javascript window对象详解

原来 Window对象包含的一些浏览器厂商实现的API,比如 html5中 的规范 sessionStorage;
它还有一个window的属性,这个属性的值就是指向Window对象;
我的理解:Window对象 是为浏览器厂商服务的,我们不能直接操作Window对象的属性,Window新增的API会反映到 window 对象中;
我们操作window 的属性 会反映到 Window 对象中。
比如 定义一个全局变量 window.a = 'aaa';

JavaScript的所有对象都存在于一个运行环境之中,这个运行环境本身也是对象,称为“顶层对象”。这就是说,JavaScript的所有对象,都是“顶层对象”的下属。不同的运行环境有不同的“顶层对象”,在浏览器环境中,这个顶层对象就是window对象。

所有浏览器环境的全局变量,都是window对象的属性。

可以把window理解成JavaScriptContext 上下文环境。

Javascript 相关文章推荐
JS 类型转换常见方法小结
May 31 Javascript
基于jQuery的js分页代码
Jun 10 Javascript
javascript中indexOf技术详解
May 07 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
Angular 中 select指令用法详解
Sep 29 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
vue+flask实现视频合成功能(拖拽上传)
Mar 04 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
js前端设计模式优化50%表单校验代码示例
Jun 21 Javascript
a标签的href与onclick事件的区别详解
Nov 12 #Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 #Javascript
JavaScript实现关键字高亮功能
Nov 12 #Javascript
javascript的函数作用域
Nov 12 #Javascript
浅析javascript的间隔调用和延时调用
Nov 12 #Javascript
jQuery的deferred对象详解
Nov 12 #Javascript
探寻Javascript执行效率问题
Nov 12 #Javascript
You might like
php中转义mysql语句的实现代码
2011/06/24 PHP
php多任务程序实例解析
2014/07/19 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JS event使用方法详解
2008/04/28 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
python脚本第一行如何写
2020/08/30 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
工程类专业自荐信范文
2014/03/09 职场文书