码迷,mamicode.com
首页 > 编程语言 > 详细

javaScript 对于全局对象对象的理解

时间:2018-10-02 20:27:27      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:html   sans   而不是   隐藏   htm   编程   ie6   标签   object   

全局对象(global object)在javascript中有着重要的用途:全局对象的属性是全局定义的符号。什么意思呢?意思就是全局对象预定义了全局的属性、函数、对象、构造函数以便你开发使用。

比如说:

1.全局属性:比如undefined、Infinity以及NaN。
2.全局对象:比如Math、JSON和Number
3.全局函数:比如isNaN()、isFinite()、parseInt()和eval()等。
4.全局构造器(constructor),也即全局类。比如Date()、RegExp()、String()、Object()和Array()等。

js运行时内置了一个Global对象

这个Global对象跟运行环境有关。在浏览器运行环境中。Global就是window对象。
在nodejs中。Global对象是global对象。

当你在浏览器环境中,直接使用一个未经定义的变量,
例如foo=123;那么foo这个变量自动声明为全局变量。变量引用自动挂载到了Global对象,即window对象上。

Global对象上的属性和函数都是js运行时提供的。例如escape\encodeURIComponent\decodeURIComponent\Regex\Infinite等等。。。

跟继承没有关系,你可以认为浏览器默认提供给你使用的对象,都放到了Global对象中,而window对象又恰好就是这个Global对象。实际上,在浏览器的内部实现中,隐藏了真正的Global对象,而把window对象作为了Global对象的替身。一切对Global对象的操作(间接操作),都会映射到window对象上,反之亦然。这样window对象就成了Global对象的替身。而window对象同时又作为Global对象的一个属性。这样,真正的Global对象就被隐藏了。

window对象虽然是浏览器环境下的js Gloabl对象。但并不意味着window对象下的所有方法和属性都是js原生提供的。原生对象只有很少一部分,浏览器环境中,大量的功能都是由宿主对象完成的。

转载自:http://zhidao.baidu.com/link?url=qTTR8X9iTqMskdBZkJafkaN0WeBhouqIe6QePPz2w3dRescyeZNibREeGXGz4Qe_NJeLdl2LEOWuw9ixW-0-NH0WbaytQy73D5oTygWdVzS

 

 

对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用。这个JavaScript自身提供的全局对象的功能包括:

1.全局对象拥有一些常用的属性值。比如undefined、Infinity以及NaN。
2.全局对象拥有一些常用的属性对象。比如Math、JSON和Number对象均为该全局对象的属性。
3.全局对象提供一些全局函数供调用。比如isNaN()、isFinite()、parseInt()和eval()等。
4.全局对象提供一些全局构造器(constructor),也即全局类。比如Date()、RegExp()、String()、Object()和Array()等。


除了JS全局对象,对于运行在浏览器端的JavaScript程序,还有另一个全局对象:window。window全局对象提供了与当前窗口、页面有关的诸多属性与方法。除了这些与浏览器有关的全局属性和方法,window对象还封装了JS全局对象,并向外暴露JS全局对象的属性与接口;因此,当进行浏览器端JavaScript编程时,只需关心window全局对象即可。

对于JavaScript程序中的this,如果this不属于任何function,那么这个this就指代JS全局对象;如果是浏览器端运行的JS程序,那么这个this就指代window全局对象。

如果这个this属于某个function,那么this指代的就是调用该function的对象。若这种情况下function只是一个普通的函数,而不是某个类的方法,那么this的指代存在两种可能:

1.在ECMAScript 3标准,以及ECMAScript 5标准的非严格模式下,this指代全局对象。
2.在ECMAScript 5标准的严格模式下,this指代undefined。

--------------------- 本文来自 weixin_40133326 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/weixin_40133326/article/details/79605945?utm_source=copy

javascript中如果宿主环境是web浏览器的话,一般全局对象是Window对象,它的引用是window。javascript中的内置全局对象(独立于宿主环境,ECMAScript中的API中声明的对象)例如Math对象,JSON对象等等。

在web中Window是全局对象,全局对象的属性就是全局变量。

 

   声明全局变量的4种方法。

 

   1.直接在全局作用域中用var 声明的变量就是全局变量,此种方式声明的变量具有不可配置的属性,不能使用delete操作符把变量删除。

 

   2.window.变量,这种声明的变量也是全局变量,但这种变量跟上面用var 声明的变量有点不一样,这种方式声明的全局变量是可配置的,因此能用delete操作符把变量删除。

 

   3.隐式声明全局变量,就是不使用var声明,直接进行赋值的变量,在不严格模式中,相当于window.变量这种方式,但在严格模式下,会报错。

 

   4.在html中给标签指定一个id属性,也相当于给Window对象添加了一个id的属性,在javascript中可直接通过标签的id访问该标签(或者window[‘id‘])。

 

本文转自https://www.cnblogs.com/smallLong/p/6535287.html

 

javaScript 对于全局对象对象的理解

标签:html   sans   而不是   隐藏   htm   编程   ie6   标签   object   

原文地址:https://www.cnblogs.com/echo-dauntless/p/9737451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!