一張圖讓你看懂javascript各類型的關係
## 這張圖來自於《JavaScript語言精髓與程式設計實踐》第三章P184頁。最近在改第二版,這張圖重做了,需要的可以對照著看。
此外,補充圖中用到的概念:
1、內建(Build-in)物件與原生(Naitve)物件的差別在於:前者總是在引擎初始化階段就被創建好的對象,是後者的子集;而後者包含了一些在運行過程中動態建立的對象。
2、引擎擴充物件是一個不太大的集合,一般來說比較確定,它們也屬於引擎的原生物件(但不屬於ECMA規範的原生物件)。
3、宿主物件不是引擎的原生對象,而是由宿主框架透過某種機制註冊到JavaScript引擎中的對象。
### 4、某些宿主會把自己提供的物件/建構器也稱為“原生物件”,例如Internet Explorer 7就把它提供的XMLHttpRequest()稱為原生的-與此相對的是在它的更早先版本中透過「new ActiveXObject('Microsoft.XMLHTTP')」這樣的方法所建立的物件。在這種情況下,讀者應注意到「宿主的原生物件」與「引擎的原生物件」之間的差異。 ############轉自:http://www.w3cfuns.com/thread-5594427-1-1.html
JavaScript 本機物件、內建物件、宿主物件
本地物件(要NEW)
#ECMA-262 把本地物件(native object)定義為「獨立於宿主環境的ECMAScript實現提供的對象」。
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(伺服器方面)、Enumerator (Regprror)、Enumerator (正規表示式)
由此可以看出,簡單來說,本地物件就是ECMA-262 定義的類別(引用型別)。
內建物件(不要NEW 直接引用-只有MATH GLOBAL)
ECMA-262 把內建物件(built-in object)定義為「由ECMAScript 實作提供的、獨立於宿主環境的所有對象,在ECMAScript 程式開始執行時出現」。這意味著開發者不必明確實例化內建對象,它已被實例化了。
同樣是「獨立於宿主環境」。根據定義我們似乎很難分辨「內建物件」與「本地物件」的區別。而ECMA-262 只定義了兩個內建對象,即 Global 和 Math (它們也是本地對象,根據定義,每個內建對像都是本地對象)。
如此就可以理解了。內建物件是本地物件的一種。而其包含的兩種物件中,Math物件我們常用到,可這個Global物件是啥東西呢?
Global物件是ECMAScript中最特別的對象,因為實際上它根本不存在!在ECMAScript中,不存在獨立的函數,所有函數都必須是某個物件的方法。
類似isNaN()、parseInt()和parseFloat()方法等,看起來都是函數,而實際上,它們都是Global物件的方法。而且Global對象的方法還不只這些。有關Global物件的具體方法和屬性,有興趣的同學可以看看這裡:JavaScript 全域物件參考手冊
宿主物件(BOM DOM & 自訂物件)
何為「宿主物件」? ECMAScript中的「宿主」當然就是我們網頁的運作環境,也就是「作業系統」和「瀏覽器」。所有非本地物件都是宿主物件(host object),也就是由 ECMAScript 實作的宿主環境提供的物件。
所有的BOM和DOM物件都是宿主物件。因為其對於不同的「宿主」環境所展示的內容不同。其實說白了就是,ECMAScript官方未定義的對像都屬於宿主對象,因為其未定義的對像大多是自己透過ECMAScript程式所建立的對象。 TML DOM 是 W3C 標準(是 HTML 文件物件模型的英文縮寫,Document Object Model for HTML)。
HTML DOM 定義了用於 HTML 的一系列標準的對象,以及存取和處理 HTML 文件的標準方法。
透過 DOM,可以存取所有的 HTML 元素,連同它們所包含的文字和屬性。可以對其中的內容進行修改和刪除,同時也可以建立新的元素。
DHTML DOM 獨立於平台和程式語言。它可被任何程式語言諸如 Java、JavaScript 和 VBScript 使用。
點擊下面的鏈接,可獲得更多關於如何使用 JavaScript 來存取和處理 DOM 物件的知識:
DOM物件:
Document代表整個 HTML 文檔,用來存取頁面中的所有元素。 Anchor代表
元素。 Area代表圖像地圖中的 元素。 Base代表