中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Javascript Global對(duì)象

Global對(duì)象

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

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

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

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

這段代碼輸出兩個(gè)值:

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

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

這段代碼輸出兩個(gè)值:

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

這些URI方法encodeURI()encodeURIComponent()decodeURI()decodeURICom- ponent()代替了BOM的escape()unescape()方法。URI方法更可取,因?yàn)樗鼈儠?huì)對(duì)所有Unicode符號(hào)編碼,而BOM方法只能對(duì)ASCII符號(hào)正確編碼。盡量避免使用escape()unescape()方法。

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

這行代碼的功能等價(jià)于下面的代碼:

當(dāng)解釋程序發(fā)現(xiàn)eval()調(diào)用時(shí),它將把參數(shù)解釋為真正的ECMAScript語(yǔ)句,然后把它插入該函數(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)大,不過也非常危險(xiǎn)。使用eval()時(shí)要極度小心,尤其在給它傳遞用戶輸入的數(shù)據(jù)時(shí)。惡意的用戶可能會(huì)插入對(duì)站點(diǎn)或應(yīng)用程序的安全性有危害的值(叫做代碼注入)。

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

屬    性

說    明

undefined

Undefined類型的字面量

NaN

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

Infinity

無(wú)窮大值的專用數(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對(duì)象,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 九九九精品视频 | 久久国产精品色av免费观看 | 国产日韩精品视频 | 婷婷中文在线 | 手机在线观看 | 在线成人一区 | 成人av一区二区在线观看 | 嫩草黄色影院 | 亚洲精品美女视频 | 爱爱视频在线观看 | 国产精品区二区三区日本 | 欧美精品一区二区免费 | 午夜精品一区二区三区在线观看 | 一区二区手机在线 | 国产91一区二区三区 | 成人自拍视频 | 高清色视频| 日日天天| 日日网| 欧美一级三级在线观看 | 男女羞羞在线观看 | 日日碰狠狠躁久久躁96avv | 欧美日韩中文字幕在线 | 色毛片 | 在线观看国产网站 | 成人免费福利视频 | 亚洲综合精品 | 欧美国产日韩精品 | 一区二区三区视频在线观看 | 亚洲毛片 | 欧美无乱码久久久免费午夜一区 | 91视频在线看 | 阿v视频在线观看 | 丁香综合 | 欧美精品一区二区三区在线播放 | 亚洲欧美日本在线 | 国产1区2区3区 | 男女午夜免费视频 | 三级在线视频 | 国产伦一区二区三区四区 | 国产不卡在线 |