javaScript關於全局對象


全局對象(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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM