總之適合自己的方法,才是最好的方法。下面切入正題:
全局對象:在宿主環境中,其自身及其所有屬性都可以在程序的任何地方、任何時間訪問到的對象;如果全局對象有切僅有一個,全局對象同時也是根節點對象;
根節點對象:所有屬性、方法都掛載在根節點對象下,便于開發者進行屬性、方法的查找;其缺點是調用繁瑣;
全局對象 :不同屬性、方法都掛載在多個節點對象下,優點是調用方便快捷;缺點也是被Java語言所詬病的無序,使用時不知從何查找;
DOM、BOM對象現在的明星NodeJS都有一個唯一的全局對象,所有其他屬性、方法都從屬于該節點對象、或其子節點對象;如DOM的html
、BOM的window
、NodeJS的global
;
Javascript為了開發者使用的方便,將諸多方法、屬性都設置為全局對象/屬性,所以Javascript就沒有所謂的唯一的根節點對象;
Javascript的全局對象根據是否依賴宿主環境分為兩類:
- 核心對象:即ECMAScript Global Object,這些對象在程序執行前已經存在了(默認實例化);
- 宿主環境下的對象:宿主環境提供的全局對象/函數,常見的是瀏覽器設定并且限制開發者重寫的,如:setTimeout、location等,
序號 | 類別 | 栗子 |
---|---|---|
1 | 值屬性 | NaN、Infinity、Undefined... |
2 | 函數屬性 | eval()、parseInt()、isNaN()、decodeURI().... |
3 | 構造器(類)屬性 | Object、Array、Function、String、Boolean、Number、Date、RegExp、Error、RangeError、SyntaxError... |
4 | 其他(類似JAVA中靜態類) | Math、JSON... |
不管是Javascript的核心全局對象,還是宿主環境擴充的全局對象;開發者都可以隨時調用;其不同之處在于:
1. ECMAScript中定義的核心全局對象是可重寫,但不可枚舉,即:Writeable=true,Enumerable=false
2. 宿主環境(主要是瀏覽器)設定的全局對象,一般是不允許重寫的
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com