js高級---本地對象、內置對象、宿主對象

 

名詞參考:
原生對象:也叫內部對象、本地對象、native object
內置對象:Build-in object
宿主對象:host objectjavascript


ECMA-262 定義
原生對象:獨立於宿主環境的ECMAScript實現提供的對象。與宿主無關,在javascript(遠景瀏覽器)、nodejs(node平臺)、jscript(ie瀏覽器)、typescript(微軟平臺)等等中均有這些對象。簡單來講,本地對象就是 ECMA-262 定義的類(引用類型)。在運行過程當中動態建立的對象,須要new
內置對象:由 ECMAScript 實現提供的、獨立於宿主環境的全部對象,在 ECMAScript 程序開始執行時出現,即在引擎初始化階段就被建立好的對象。這意味着開發者沒必要明確實例化內置對象,它已被實例化了
宿主對象:即由 ECMAScript 實現的宿主環境提供的對象,包含兩大類,一個是宿主提供,一個是自定義類對象,ECMAScript官方未定義的對象都屬於宿主對象,全部非本地對象都是宿主對象。宿主提供對象原理--->由宿主框架經過某種機制註冊到ECscript引擎中的對象,如宿主瀏覽器(以遠景爲參考)會向ECscript注入window對象,構建其實現javascript。。java


內容
原生對象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、Global
內置對象:Global(全局對象)、Math
宿主對象:有宿主提供的對象,在瀏覽器中window對象以及其下邊全部的子對象(如bom、dom等等),在node中是globla及其子對象,也包含自定義的類對象。【何爲「宿主對象」?  在web中,ECMAScript中的「宿主」固然就是咱們網頁的運行環境,即「操做系統」和「瀏覽器」。全部非本地對象都是宿主對象(host object),即由 ECMAScript 實現的宿主環境提供的對象。】
全局對象:通常全局對象會有兩個,一個是ecma提供的Global對象,一個是宿主提供。如在瀏覽器中是window、在nodejs中是global。【因此啊,在瀏覽器中全局對象是Global+window】
一般狀況下ecma提供的Global對象對是不存在的,沒有具體的對象,

查看window下,當前全部的成員,除了console.log(window),你還能夠這麼作
在chrome進行debug時候中有個scope,當前做用域,其中Global只顯示了window全部的成員,並無顯示Ecma的Global,由於我沒有找到Ecma提供的Global任何字段和函數
node

 

 

 

 

 

它們之間的關係
本地對象與內置對象:原生包含內置,內置是原生的一個子集。
宿主對象:內置對象的Global和宿主提供的一個全局對象,web

本地對象爲array obj regexp等能夠new實例化
內置對象爲gload Math 等不能夠實例化的
宿主爲宿主注入到全局的對象,如瀏覽器的window 等chrome


特別說明:
內置對象之Global
Global即爲全局對象,Global對象是ECMAScript中最特別的對象,由於實際上它根本不存在!
在ECMAScript中,不存在獨立的函數,全部函數都必須是某個對象的方法。
相似於isNaN()、parseInt()和parseFloat()方法等,看起來都是函數,而實際上,它們都是Global對象的方法。
並且Global對象的方法還不止這些。具體參考http://www.w3school.com.cn/jsref/jsref_obj_global.asptypescript

 

拓展方法內容
不管是什麼對象,都可以經過prototype進行功能拓展。

打印瀏覽器的全局對象
打印自定義的對象,會顯示出源碼,可是打印全局對象,由於這些全局對象是程序自帶的,是二進制編譯的,因此沒法顯示出來源代碼
它就只能給你‘native code’瀏覽器

<script>
    var myfc=function(){var a=123;}
    console.log(myfc)//瀏覽器全局對象之window下自定義的myfc函數
    console.log(alert)//瀏覽器全局對象之window的alert函數
    console.log(isNaN)//瀏覽器全局對象之Global的isNaN函數
</script>

 

 

相關
http://blog.csdn.net/zihuanzq_2014/article/details/52006504
http://www.jb51.net/article/85831.htm
http://lzw.me/pages/ecmascript/
http://yanhaijing.com/es5/#4
框架

相關文章
相關標籤/搜索