《JS原理、方法与实践》- Global与Window对象

作者 : 开心源码 本文共1321个字,预计阅读时间需要4分钟 发布时间: 2022-05-13 共179人阅读

JS时面向对象的语言,或者者说它本身就是一个大对象,就像一个大箱子里面装着很多大盒子,每个大盒子里面都装着小盒子….那么最顶层的箱子是什么呢?这个对象在ES标准中叫做Global对象。ES标准中规定Global对象要在进入执行环境前就已创立,它是所有对象的根对象,其余对下个你都是它的属性或者者属性的属性。
这里的Global是表示功能的词,不代表具体的对象名。事实上并不肯定存在Global对象,但是每个具体的宿主环境都需要有一个Global对象,例如,浏览器中的window对象就是Global对象,所有其余对象都是window对象的属性或者其属性的属性。例如,Stirng,Number,Boolean,Array,RegExp等对象都是window的属性,就连Object和Function也是window的属性对象。
可利用:console.log(Object.getOwnPropertyNames(window));
查看widow包含的属性,亲测包含1102个,有些可能并没有什么意义,但是多为有意义的属性。

Window对象的特殊性

浏览器的Global对象window是使用Window对象创立出来的,Window对象是function类型,window对象是obejct类型。用于创立window对象的Window对象跟我们自己设置的function对象之间存在少量差别。

  • 不可以创立对象:我们自己创立的function对象可以使用new关键字来创立相应的object类型实例对象,但是Window对象不可以用于创立对象。
  • 不可以作为方法调用:Window也不可以作为方法来调用,也就是说,在程序中直接调用Window()也是不可以的,并且这种用法也没有实际意义。
  • 变量就是属性:在最外层定义的变量也叫做全局变量,与在function中定义的其余变量存在很大的区别。在最外层定义的变量会自动称为window对象的属性,而在普通function中变量和实例对象的属性是完全没有关系的两类数据。
    代码示例:
var v = 1;// 通过修改this的属性可以改变全局变量的值this.v = 2;console.log(v); // 2// 通过修改全局变量的值也可以修改window对象同名属性的值v = 3;console.log(window.v); // 3// 我们自己设置方法中变量和实例对象的属性是相互独立的function Obj(){    var v = 2;    this.v = 5;    console.log(v); // 2    console.log(this.v); // 5}new Obj(); // 2

从上面的示例中可以看出,最外层定义的变量和this的属性及window的同名属性都是同一个,可以相互操作。但是,在我们自己设置的function函数体内变量和属性之间存在严格区分,不可以相互调用。

另外,window对象本身也是自己的一个属性

可利用语句查看:console.log(Object.getOwnPropertyNames(window));

假如觉得文章写得还行,请点个赞。假如想与我进一步交流,可以关注我的公众号或者者加我的微信。

个人微信
公众号_前台微说.jpg

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 《JS原理、方法与实践》- Global与Window对象

发表回复