1. 程式人生 > >JavaScript中本地物件、內建物件和宿主物件

JavaScript中本地物件、內建物件和宿主物件

首先解釋下宿主環境:一般宿主環境由外殼程式建立與維護,只要能提供js引擎執行的環境都可稱之為外殼程式。如:web瀏覽器,一些桌面應用系統等。即由web瀏覽器或是這些桌面應用系統早就的環境即宿主環境。

本地物件

ECMA-262 把本地物件(native object)定義為“獨立於宿主環境的 ECMAScript 實現提供的物件”。

再來看一下,“本地物件”包含哪些內容:

Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

由此可以看出,簡單來說,本地物件就是 ECMA-262 定義的類(引用型別)。

內建物件

ECMA-262 把內建物件(built-in object)定義為“由 ECMAScript 實現提供的、獨立於宿主環境的所有物件,在 ECMAScript 程式開始執行時出現”。這意味著開發者不必明確例項化內建物件,它已被例項化了。

同樣是“獨立於宿主環境”。根據定義我們似乎很難分清“內建物件”與“本地物件”的區別。而ECMA-262 只定義了兩個內建物件,即 Global 和 Math (它們也是本地物件,根據定義,每個內建物件都是本地物件)。

如此就可以理解了。內建物件是本地物件的一種。而其包含的兩種物件中,Math物件我們經常用到,可這個Global物件是啥東西呢?

Global物件是ECMAScript中最特別的物件,因為實際上它根本不存在,但大家要清楚,在ECMAScript中,不存在獨立的函式,所有函式都必須是某個物件的方法。類似於isNaN()、parseInt()和parseFloat()方法等,看起來都是函式,而實際上,它們都是Global物件的方法。而且Global物件的方法還不止這些。有關Global物件的具體方法和屬性,感興趣的同學可以看一下這裡:JavaScript 全域性物件參考手冊

      3.宿主物件

由ECMAScript實現的宿主環境提供的物件,可以理解為:瀏覽器提供的物件。所有的BOM和DOM都是宿主物件。

4.自定義物件

總結:

JS中,可以將物件分為“內部物件”、“宿主物件”和“自定義物件”三種。

1,內部物件

js中的內部物件包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各種錯誤類物件,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。

其中Global和Math這兩個物件又被稱為“內建物件”,這兩個物件在指令碼程式初始化時被建立,不必例項化這兩個物件。

2.宿主物件

宿主物件就是執行JS指令碼的環境提供的物件。對於嵌入到網頁中的JS來說,其宿主物件就是瀏覽器提供的物件,所以又稱為瀏覽器物件,如IE、Firefox等瀏覽器提供的物件。不同的瀏覽器提供的宿主物件可能不同,即使提供的物件相同,其實現方式也大相徑庭!這會帶來瀏覽器相容問題,增加開發難度。

瀏覽器物件有很多,如Window和Document等等。

3.自定義物件

顧名思義,就是開發人員自己定義的物件。JS允許使用自定義物件,使JS應用及功能得到擴充