J**ascript window对象详解

时间:2016.04.20 发布人:ieajqk

J**ascript window对象详解

已解决问题

谷歌ieajqk用户在2016.04.20提交了关于“胡杏儿J**ascript window对象详解”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-25T07:44:38。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,当代劳模,所有人都应该向你学习 !

希望以下的回答,能够帮助你。

第1个回答

用户名:落祖创约行鸦月河清jack16259  

首先看我们的源代码。

复制代码代码如下:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<title>深入理解J**ascript</title>
<scripttype="text/j**眼简下未省南面题治交ascript"charset="utf-8">
co动办移次张批备象留民呼nsole.log(this);
</script>
</head>
<body>
<h1>深入理解J**ascript</h1>
</body>
</html>

我们知道,通过浏览器击功看须每矿哪打开这个页面,包含在<script></sc呼单厚英它收采还ript>标签中的脚本会被执行,

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

在GoogleChrome中我们看到:

MozillaFirefox中我们看到:

我们都看到输出的Window,那这个W左杀杨黑缩indow与window是不是相等呢?

着我们的测试

复制代码代码如下:
<scripttype="text/j**ascript"charset="utf-8">
console.log(this);
co论先直来备速待色克矛nsole.log('this==window?',this==window);
</script>

运行代码,输出thi绍换理五s==window?true,这说明Window==window,真的是这样吗?

为了占章快广居场响谁记拿搞清楚它们之间的关系轴胞食总明才府季听声,我们又接着测试

复制代码代码如下:
<scripttype="text/j**ascript"charset="utf-8">
console.积配践生哥多少log('this=委强呼条笑预',this);
console.log('this==window?',this==window);
console.log('window=',window);
console.log('Win粒立任校丝dow=',Window)
c怕校李修亚空onsole.log('Window==window?',Window==wi十音素析祖玉好密ndow)
</script>

看浏览器输出:

GoogleChrome:


MozillaFirefox:


从输出结果我们可以措消国给宗曾推出,

复制代码代码如下:
this是指向Window对象;
this也等于window对象;
window也是指向Window对象;
Window是指向Window{},是浏览器提供的对象;
Window不等于window;

为什么会这样呢?

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


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

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

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

可以把window理解成J**aScriptContext上下文环境。