Java对象及相关
1、宿主環(huán)境:一般宿主環(huán)境由外殼程序創(chuàng)建與維護(hù),只要能提供js引擎執(zhí)行的環(huán)境都可稱之為外殼程序。如:web瀏覽器,一些桌面應(yīng)用系統(tǒng)等。即由web瀏覽器或是這些桌面應(yīng)用系統(tǒng)早就的環(huán)境即宿主環(huán)境。
2、本地對象
ECMA-262 把本地對象(native object)定義為“獨(dú)立于宿主環(huán)境的 ECMAScript 實(shí)現(xiàn)提供的對象”。
再來看一下,“本地對象”包含哪些內(nèi)容:
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
由此可以看出,簡單來說,本地對象就是 ECMA-262 定義的類(引用類型)。
3、內(nèi)置對象
ECMA-262 把內(nèi)置對象(built-in object)定義為“由 ECMAScript 實(shí)現(xiàn)提供的、獨(dú)立于宿主環(huán)境的所有對象,在 ECMAScript 程序開始執(zhí)行時(shí)出現(xiàn)”。這意味著開發(fā)者不必明確實(shí)例化內(nèi)置對象,它已被實(shí)例化了。
同樣是“獨(dú)立于宿主環(huán)境”。根據(jù)定義我們似乎很難分清“內(nèi)置對象”與“本地對象”的區(qū)別。而ECMA-262 只定義了兩個(gè)內(nèi)置對象,即 Global 和 Math (它們也是本地對象,根據(jù)定義,每個(gè)內(nèi)置對象都是本地對象)。
如此就可以理解了。內(nèi)置對象是本地對象的一種。而其包含的兩種對象中,Math對象我們經(jīng)常用到,可這個(gè)Global對象是啥東西呢?
Global對象是ECMAScript中最特別的對象,因?yàn)閷?shí)際上它根本不存在,但大家要清楚,在ECMAScript中,不存在獨(dú)立的函數(shù),所有函數(shù)都必須是某個(gè)對象的方法。類似于isNaN()、parseInt()和parseFloat()方法等,看起來都是函數(shù),而實(shí)際上,它們都是Global對象的方法。而且Global對象的方法還不止這些。有關(guān)Global對象的具體方法和屬性,感興趣的同學(xué)可以看一下這里:JavaScript 全局對象參考手冊
4.宿主對象
由ECMAScript實(shí)現(xiàn)的宿主環(huán)境提供的對象,可以理解為:瀏覽器提供的對象。所有的BOM和DOM都是宿主對象。
5.自定義對象
總結(jié):
JS中,可以將對象分為“內(nèi)部對象”、“宿主對象”和“自定義對象”三種。
1,內(nèi)部對象
js中的內(nèi)部對象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各種錯(cuò)誤類對象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。
其中Global和Math這兩個(gè)對象又被稱為“內(nèi)置對象”,這兩個(gè)對象在腳本程序初始化時(shí)被創(chuàng)建,不必實(shí)例化這兩個(gè)對象。
2.宿主對象
宿主對象就是執(zhí)行JS腳本的環(huán)境提供的對象。對于嵌入到網(wǎng)頁中的JS來說,其宿主對象就是瀏覽器提供的對象,所以又稱為瀏覽器對象,如IE、Firefox等瀏覽器提供的對象。不同的瀏覽器提供的宿主對象可能不同,即使提供的對象相同,其實(shí)現(xiàn)方式也大相徑庭!這會帶來瀏覽器兼容問題,增加開發(fā)難度。
瀏覽器對象有很多,如Window和Document等等。
3.自定義對象
顧名思義,就是開發(fā)人員自己定義的對象。JS允許使用自定義對象,使JS應(yīng)用及功能得到擴(kuò)充
Global對象
Global(全局)對象是在ECMAScript中是一個(gè)特別的對象,因?yàn)檫@個(gè)對象是不存在的。在ECMAScript 中任何不屬于其他對象的方法和屬性都是這個(gè)對象的方法和屬性。所有事實(shí)上并不存在什么全局屬性和全局函數(shù),因?yàn)橐磺腥值暮瘮?shù)和屬性都是這個(gè)Global對象的方法和屬性。但是由于這個(gè)對象并不是真真存在的,并且ECMAScript也沒有定義怎樣定義和調(diào)用這個(gè)對象,故所有Global.屬性和Global.()都是無效的,但是在WEB瀏覽器中中把Global對象作為window對象的一部分實(shí)現(xiàn)了,故一切的所謂的全局屬性和方法都是window對象的方法和屬性。
轉(zhuǎn)自博客
轉(zhuǎn)載于:https://www.cnblogs.com/Ajay-blog/p/6423469.html
總結(jié)
- 上一篇: AppDomain
- 下一篇: Java并发编程高级篇(十):分离任务的