JavaScript的學(xué)習(xí)入門(mén)整理篇
更新時(shí)間:2008年09月24日 23:22:09 作者:
每次剛開(kāi)始學(xué)語(yǔ)言時(shí),作者都喜歡用“hello world”例子l來(lái)侮辱我們的智商,我想大家都不是笨蛋,故而寥寥數(shù)筆寫(xiě)了一點(diǎn)
9:
Global對(duì)象是ECMAScript中最特別的對(duì)象,因?yàn)閷?shí)際上它根本不存在。如果嘗試編寫(xiě)下面的代碼,將得到錯(cuò)誤:
錯(cuò)誤消息顯示Global不是對(duì)象,但剛才不是說(shuō)Global是對(duì)象嗎?沒(méi)錯(cuò)。這里需要理解的主要概念是,在ECMAScript中,不存在獨(dú)立的函數(shù),所有函數(shù)都必須是某個(gè)對(duì)象的方法。本書(shū)前面介紹的函數(shù),如isNaN()、isFinite()、parseInt()和parseFloat()等,看起來(lái)都像獨(dú)立的函數(shù)。實(shí)際上,它們都是Global對(duì)象的方法。而且Global對(duì)象的方法不止這些。
encodeURI()和encodeURIComponent()方法用于編碼傳遞給瀏覽器的URI(統(tǒng)一資源標(biāo)識(shí)符)。有效的URI不能包含某些字符,如空格。這兩個(gè)方法用于編碼URI,這樣用專(zhuān)門(mén)的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)、前斜杠、問(wèn)號(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è)方法用于解碼編碼過(guò)的URI,即decodeURI()和decodeURIComponent()。如你所料,這兩個(gè)方法所做的恰與其對(duì)應(yīng)的方法相反。decodeURI()方法只對(duì)用encodeURI()方法替換的字符解碼。例如,%20將被替換為空格,而%23不會(huì)被替換,因?yàn)樗硎镜氖怯㈡^符號(hào)(#),encodeURI()并不替換這個(gè)符號(hào)。同樣的,decodeURIComponent()會(huì)解碼所有encodeURIComponent()編碼過(guò)的字符,意味著它將對(duì)所有的特殊值解碼。例如:
這段代碼輸出兩個(gè)值:
在這個(gè)例子中,變量uri存放的是用encodeURIComponent()編碼的字符串。生成的值說(shuō)明了應(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)編碼,而B(niǎo)OM方法只能對(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ù),所以仍可在接下來(lái)的一行中調(diào)用sayHi()。
這種功能非常強(qiáng)大,不過(guò)也非常危險(xiǎn)。使用eval()時(shí)要極度小心,尤其在給它傳遞用戶(hù)輸入的數(shù)據(jù)時(shí)。惡意的用戶(hù)可能會(huì)插入對(duì)站點(diǎn)或應(yīng)用程序的安全性有危害的值(叫做代碼注入)。
Global對(duì)象不只有方法,它還有屬性。還記得那些特殊值undefined、NaN和Infinity嗎?它們都是Global對(duì)象的屬性。此外,所有本地對(duì)象的構(gòu)造函數(shù)也都是Global對(duì)象的屬性。
10;
open(URL,WindowName,parameterList):open方法創(chuàng)建一個(gè)新的瀏覽器窗口,并在新窗口中載入一個(gè)指定的URL地址。
close():close方法關(guān)閉一個(gè)瀏覽器窗口.
alert(text):彈出一個(gè)信息框.
confirm(text):彈出一個(gè)確認(rèn)框.
prompt(text,Defaulttext):彈出一個(gè)提示框.
setTimeout(expression,time):定時(shí)設(shè)置,在一定時(shí)間后自動(dòng)執(zhí)行expression描述的代碼,使用time設(shè)置時(shí)間,單位是毫秒.
clearTimeout(timer):取消以前的定時(shí)設(shè)置.
back():指示瀏覽器載入歷史記錄中的上一個(gè)URL地址.
forward():指示瀏覽器載入歷史記錄中的下一個(gè)URL地址.
stop():指示瀏覽器停止網(wǎng)頁(yè)的裝載.
location:提供當(dāng)前窗口的URL信息clearTimeout(timer):取消以前的定時(shí)設(shè)置.
back():指示瀏覽器載入歷史記錄中的上一個(gè)URL地址.
forward():指示瀏覽器載入歷史記錄中的下一個(gè)URL地址.
stop():指示瀏覽器停止網(wǎng)頁(yè)的裝載.
location:提供當(dāng)前窗口的URL信息
close():close方法關(guān)閉一個(gè)瀏覽器窗口.
alert(text):彈出一個(gè)信息框.
confirm(text):彈出一個(gè)確認(rèn)框.
prompt(text,Defaulttext):彈出一個(gè)提示框.
setTimeout(expression,time):定時(shí)設(shè)置,在一定時(shí)間后自動(dòng)執(zhí)行expression描述的代碼,使用time設(shè)置時(shí)間,單位是毫秒.
clearTimeout(timer):取消以前的定時(shí)設(shè)置.
back():指示瀏覽器載入歷史記錄中的上一個(gè)URL地址.
forward():指示瀏覽器載入歷史記錄中的下一個(gè)URL地址.
stop():指示瀏覽器停止網(wǎng)頁(yè)的裝載.
location:提供當(dāng)前窗口的URL信息
back():指示瀏覽器載入歷史記錄中的上一個(gè)URL地址.
forward():指示瀏覽器載入歷史記錄中的下一個(gè)URL地址.
stop():指示瀏覽器停止網(wǎng)頁(yè)的裝載.
location:提供當(dāng)前窗口的URL信息
您可能感興趣的文章:
- 如何學(xué)習(xí)Javascript入門(mén)指導(dǎo)
- ExtJS 學(xué)習(xí)專(zhuān)題(一) 如何應(yīng)用ExtJS(附實(shí)例)
- JavaScript入門(mén)學(xué)習(xí)書(shū)籍推薦
- Javascript入門(mén)學(xué)習(xí)第一篇 js基礎(chǔ)
- Javascript 入門(mén)基礎(chǔ)學(xué)習(xí)
- Javascript入門(mén)學(xué)習(xí)第八篇 js dom節(jié)點(diǎn)屬性說(shuō)明
- 入門(mén)基礎(chǔ)學(xué)習(xí) ExtJS筆記(一)
- Javascript入門(mén)學(xué)習(xí)第九篇 Javascript DOM 總結(jié)
- JavaScript 學(xué)習(xí)初步 入門(mén)教程
- 如何學(xué)JavaScript?前輩的經(jīng)驗(yàn)之談
相關(guān)文章
JavaScript中Array 對(duì)象相關(guān)的幾個(gè)方法
JavaScript中Array 對(duì)象相關(guān)的幾個(gè)方法...2006-12-12
Internet Explorer 11 瀏覽器介紹:別叫我IE
這篇文章主要介紹了Internet Explorer 11 瀏覽器介紹:別叫我IE,需要的朋友可以參考下2014-09-09
JavaScript中幾種排序算法的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了JavaScript中幾種排序算法的簡(jiǎn)單實(shí)現(xiàn),排序是各種編程語(yǔ)言學(xué)習(xí)中都是共通的必會(huì)的基礎(chǔ),需要的朋友可以參考下2015-07-07
javascript學(xué)習(xí)筆記(三)BOM和DOM詳解
本文應(yīng)用了很多實(shí)例,來(lái)解讀JavaScript中BOM和DOM,DOM是一個(gè)使程序和腳本有能力動(dòng)態(tài)地訪問(wèn)和更新文檔的內(nèi)容、結(jié)構(gòu)以及樣式的平臺(tái)和語(yǔ)言中立的接口。,而B(niǎo)OM定義了JavaScript可以進(jìn)行操作的瀏覽器的各個(gè)功能部件的接口。2014-09-09
淺談JavaScript中setInterval和setTimeout的使用問(wèn)題
這篇文章主要介紹了淺談JavaScript中setInterval和setTimeout的使用問(wèn)題,作者建議在任務(wù)龐大時(shí)盡量避免使用setInterval,需要的朋友可以參考下2015-08-08

