四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

Javascript Global對象

Global對象

Global對象是ECMAScript中最特別的對象,因?yàn)閷?shí)際上它根本不存在。如果嘗試編寫下面的代碼,將得到錯誤:

錯誤消息顯示Global不是對象,但剛才不是說Global是對象嗎?沒錯。這里需要理解的主要概念是,在ECMAScript中,不存在獨(dú)立的函數(shù),所有函數(shù)都必須是某個對象的方法。本書前面介紹的函數(shù),如isNaN()、isFinite()、parseInt()和parseFloat()等,看起來都像獨(dú)立的函數(shù)。實(shí)際上,它們都是Global對象的方法。而且Global對象的方法不止這些。

encodeURI()和encodeURIComponent()方法用于編碼傳遞給瀏覽器的URI(統(tǒng)一資源標(biāo)識符)。有效的URI不能包含某些字符,如空格。這兩個方法用于編碼URI,這樣用專門的UTF-8編碼替換所有的非有效字符,就可以使瀏覽器仍能夠接受并理解它們。

encodeURI()方法用于處理完整的URI(例如,http://www.wrox.com/illegal value.htm),而encodeURIComponent()用于處理URI的一個片斷(如前面的URI中的illegal value.htm)。這兩個方法的主要區(qū)別是encodeURI()方法不對URI中的特殊字符進(jìn)行編碼,如冒號、前斜杠、問號和英鎊符號,而encodeURIComponent()則對它發(fā)現(xiàn)的所有非標(biāo)準(zhǔn)字符進(jìn)行編碼。例如:

這段代碼輸出兩個值:

可以看到,除空格外,第一個URI無任何改變,空格被替換為%20。第二個URI中的所有非字母數(shù)字字符都被替換成它們對應(yīng)的編碼,基本上使這個URI變得無用。這就是encodeURI()可以處理完整URI,而encodeURIComponent()只能處理附加在已有URI末尾的字符串的原因。

自然,還有兩個方法用于解碼編碼過的URI,即decodeURI()和decodeURIComponent()。如你所料,這兩個方法所做的恰與其對應(yīng)的方法相反。decodeURI()方法只對用encodeURI()方法替換的字符解碼。例如,%20將被替換為空格,而%23不會被替換,因?yàn)樗硎镜氖怯㈡^符號(#),encodeURI()并不替換這個符號。同樣的,decodeURIComponent()會解碼所有encodeURIComponent()編碼過的字符,意味著它將對所有的特殊值解碼。例如:

這段代碼輸出兩個值:

在這個例子中,變量uri存放的是用encodeURIComponent()編碼的字符串。生成的值說明了應(yīng)用兩個解碼方法時會發(fā)生的事情。第一個值由decodeURI()輸出,把%20替換成空格。第二個值由decodeURIComponent()輸出,替換所有的特殊。

這些URI方法encodeURI()encodeURIComponent()decodeURI()decodeURICom- ponent()代替了BOM的escape()unescape()方法。URI方法更可取,因?yàn)樗鼈儠λ蠻nicode符號編碼,而BOM方法只能對ASCII符號正確編碼。盡量避免使用escape()unescape()方法。

最后一個方法可能是整個ECMAScript語言中最強(qiáng)大的方法,即eval()方法。該方法就像整個ECMAScript的解釋程序,接受一個參數(shù),即要執(zhí)行的ECMAScript(或JavaScript)字符串。例如:

這行代碼的功能等價于下面的代碼:

當(dāng)解釋程序發(fā)現(xiàn)eval()調(diào)用時,它將把參數(shù)解釋為真正的ECMAScript語句,然后把它插入該函數(shù)所在的位置。這意味著eval()調(diào)用內(nèi)部引用的變量可在參數(shù)以外定義:

這里,變量msg是在eval()調(diào)用的環(huán)境外定義的,而警告仍然顯示的是文本"hello world",因?yàn)榈诙写a將被替換為一行真正的代碼。同樣,可以在eval()調(diào)用內(nèi)部定義函數(shù)或變量,然后在函數(shù)外的代碼中引用:

這里,函數(shù)sayHi()是在eval()調(diào)用內(nèi)部定義的。因?yàn)樵撜{(diào)用將被替換為真正的函數(shù),所以仍可在接下來的一行中調(diào)用sayHi()。

這種功能非常強(qiáng)大,不過也非常危險。使用eval()時要極度小心,尤其在給它傳遞用戶輸入的數(shù)據(jù)時。惡意的用戶可能會插入對站點(diǎn)或應(yīng)用程序的安全性有危害的值(叫做代碼注入)。

Global對象不只有方法,它還有屬性。還記得那些特殊值undefined、NaN和Infinity嗎?它們都是Global對象的屬性。此外,所有本地對象的構(gòu)造函數(shù)也都是Global對象的屬性。下表較詳細(xì)地說明了Global對象的所有屬性:

屬    性

說    明

undefined

Undefined類型的字面量

NaN

非數(shù)的專用數(shù)值

Infinity

無窮大值的專用數(shù)值

Object

Object的構(gòu)造函數(shù)

Array

Array的構(gòu)造函數(shù)

Function

Function的構(gòu)造函數(shù)

Boolean

Boolean的構(gòu)造函數(shù)

String

String的構(gòu)造函數(shù)

Number

Number的構(gòu)造函數(shù)

Date

Date的構(gòu)造函數(shù)

RegExp

RegExp的構(gòu)造函數(shù)

Error

Error的構(gòu)造函數(shù)

EvalError

EvalError的構(gòu)造函數(shù)

RangeError

RangeError的構(gòu)造函數(shù)

ReferenceError

ReferenceError的構(gòu)造函數(shù)

SyntaxError

SyntaxError的構(gòu)造函數(shù)

TypeError

TypeError的構(gòu)造函數(shù)

URIError

URIError的構(gòu)造函

JavaScript技術(shù)Javascript Global對象,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 韩国电影诱惑| 浙江卫视是几台| 孤战迷城 电视剧| 屈原话剧| 阴阳界 电影| 百字明咒注音全文读诵| 这就是中国 纪录片| 金馆长对金馆长对金馆长 电影| 天地姻缘七仙女演员表| 思想道德与法治2023版| 原创视频| 谜证在线观看免费完整版| 青春正步走 电视剧| 培根《谈读书》原文及翻译| 林丹出轨视频| 董卿简历| 乱世危情电视剧演员表| 经典常谈周易第二读书笔记| 松果儿| 鸽子公母鉴别图解| 6套电影频道节目表| 疯狂 电影| 贪玩的小水滴300字| 小娘惹电视连续剧48集剧情| 探究事物的本质的读后感想| 黄视频免费在线| 2023大湾区音乐会节目单| 恶老板| 爆操大胸美女| 刘越| 膨腹爱好者撑肚子视频| 欧美吻戏视频| 邵雨薇为艺术贡献的电影有哪些| 23号牛乃唐第一季电视剧免费观看| 男生女生向前冲第六季2014| 爱情插班生| 名剑风流 电视剧| 美女写真视频高清福利| 施耐得| 幼儿园老师锦旗赠言| duba|