JavaScript基礎教程.doc_第1頁
JavaScript基礎教程.doc_第2頁
JavaScript基礎教程.doc_第3頁
JavaScript基礎教程.doc_第4頁
JavaScript基礎教程.doc_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

javascript基礎教程這是一個JavaScript的基本教程,它從零開始說起,為大家提供逐步的學習過程!本教程為未接觸過 JavaScript 的讀者提供了比較完善的初級知識,但只限于初級知識:所有與動態(tài)網(wǎng)頁密切相關的 JavaScript 在本教程中都未提及,包括動態(tài)定位、動畫、讓文檔接收更多事件(document.captureEvent()等;所有在 IE 及 Netscape 中有不同的 JavaScript 都盡少提及。JavaScipt基本教程之前言JavaScript 參考教程 本教程為未接觸過 JavaScript 的讀者提供了比較完善的初級知識,但只限于初級知識:所有與動態(tài)網(wǎng)頁密切相關的 JavaScript 在本教程中都未提及,包括動態(tài)定位、動畫、讓文檔接收更多事件(document.captureEvent()等;所有在 IE 及 Netscape 中有不同的 JavaScript 都盡少提及。本教程在結構上設計的比較像一個參考(reference),有參考的規(guī)劃性,但又有教程的性質,所以我把它叫做“參考教程”。本教程不面向連 HTML 都沒有學好的讀者。本教程中會多次提到有關 HTML 的內(nèi)容,并不會對這些 HTML 的知識做講解。未接觸過 JavaScript 的讀者看完此教程應該對 JavaScript 有比較深的掌握。接觸過 JavaScript 的讀者可以當此教程為參考來用。本教程對 JavaScript 的基礎有比較詳細的講述,對如對象、事件之類比較深入的知識則講述得比較淺易,型如參考。如果讀者有一定的理解能力和消化能力,相信在掌握了基礎部分后,在學習進階的章節(jié)時不會遇到什么困難。本教程所用的參考式結構,使教程看起來很統(tǒng)一在講述語句的時候,對語句以外的任何知識只字不提;在講述對象的時候,又對對象以外的任何知識只字不提。如果你想快速學會 JavaScript,你可能要掌握“跳章學習”的方法。左邊可以看到本教程整個結構樹??梢钥吹焦卜?5 章,前兩章是基礎知識,第三第四章是進階知識對象,第五章是針對兩個對象框架和 Cookie 進行詳細的講解,作為第三第四章中內(nèi)容的補充。理解能力不好或者依賴性強的讀者可能學到 JavaScript 的核心對象化編程時會覺得力不從心,因為它們不習慣這種參考式的文章;急于求成的讀者可能對本教程非常統(tǒng)一的參考式結構覺得厭惡,因為他們必須學到第三第四章才可以做一個小小的 JavaScript。本教程缺乏例子。讀者要有很強的“悟性”和很愿意自己去實踐,才可以很好的掌握 JavaScript。本教程的作者Micro.只此一人,偉大嗎?除了我,還有兩本 JavaScript 的書,一本是 JS 1.1 教程,但是本教程編了不久書被別人借去了;另一本是很淺的參考,如果照搬,大家都不會明白說了什么。還有兩個瀏覽器,用來實踐;還有英文版的 JavaScript 參考、教程,來自 MSDN 和 Netscape 網(wǎng)。還有一個腦,兩只手,一臺電腦JavaScript 有什么特點JavaScript 使網(wǎng)頁增加互動性。JavaScript 使有規(guī)律地重復的HTML文段簡化,減少下載時間。JavaScript 能及時響應用戶的操作,對提交表單做即時的檢查,無需浪費時間交由 CGI 驗證。JavaScript 的特點是無窮無盡的,只要你有創(chuàng)意。Java 與 JavaScript 有什么不同很多人看到 Java 和 JavaScript 都有“Java”四個字,就以為它們是同一樣東西,連我自己當初也是這樣。其實它們是完完全全不同的兩種東西。Java,全稱應該是 Java Applet,是嵌在網(wǎng)頁中,而又有自己獨立的運行窗口的小程序。Java Applet 是預先編譯好的,一個 Applet 文件(.class)用 Notepad 打開閱讀,根本不能理解。Java Applet 的功能很強大,可以訪問 http、ftp等協(xié)議,甚至可以在電腦上種病毒(已有先例了)。相比之下,JavaScript 的能力就比較小了。JavaScript 是一種“腳本”(“Script”),它直接把代碼寫到 HTML 文檔中,瀏覽器讀取它們的時候才進行編譯、執(zhí)行,所以能查看 HTML 源文件就能查看JavaScript 源代碼。JavaScript 沒有獨立的運行窗口,瀏覽器當前窗口就是它的運行窗口。它們的相同點,我想只有同是以 Java 作編程語言一點了。開發(fā) JavaScript 該用什么軟件一個 JavaScript 程序其實是一個文檔,一個文本文件。它是嵌入到 HTML 文檔中的。所以,任何可以編寫 HTML 文檔的軟件都可以用來開發(fā) JavaScript。在此我推薦大家用 FrontPage 2000 附帶的 Microsoft 腳本編輯器(在 FrontPage 菜單 | 工具 | 宏 | Microsoft 腳本編輯器)。它是個像 Visual Basic / C+ 一樣的程序開發(fā)器,能對正在輸入的語句作出簡要提示。配合 FrontPage 2000,使工作量大大減少。JavaScipt基本教程之JavaScript語言的基礎在什么地方插入 JavaScriptJavaScript 可以出現(xiàn)在 HTML 的任意地方。使用標記,你可以在 HTML 文檔的任意地方插入 JavaScript,甚至在之前插入也不成問題。不過如果要在聲明框架的網(wǎng)頁(框架網(wǎng)頁)中插入,就一定要在之前插入,否則不會運行?;靖袷?第二行和第四行的作用,是讓不懂標記的瀏覽器忽略 JavaScript 代碼。一般可以省略,因為現(xiàn)在想找不懂 Script 的瀏覽器,恐怕就連博物館里也沒有了。第四行前邊的雙反斜杠“/”是 JavaScript 里的注釋標號,以后將學到。另外一種插入 JavaScript 的方法,是把 JavaScript 代碼寫到另一個文件當中(此文件通常應該用“.js”作擴展名),然后用格式為“”的標記把它嵌入到文檔中。注意,一定要用“”標記。參考 標記還有一個屬性:language(縮寫lang),說明腳本使用的語言。對于 JavaScript,請用“l(fā)anguage=JavaScript”。參考 相對于標記,還有一個標記。標記所包含的,是服務器端(Server Side)的腳本。本教程只討論客戶器端(Client Side)的 JavaScript,也就是用標記包含的腳本。如果想在瀏覽器的“地址”欄中執(zhí)行 JavaScript 語句,用這樣的格式:javascript:這樣的格式也可以用在連接中:a href=javascript:.JavaScript 基本語法每一句 JavaScript 都有類似于以下的格式:;其中分號“;”是 JavaScript 語言作為一個語句結束的標識符。雖然現(xiàn)在很多瀏覽器都允許用回車充當結束符號,培養(yǎng)用分號作結束的習慣仍然是很好的。語句塊 語句塊是用大括號“ ”括起來的一個或 n 個語句。在大括號里邊是幾個語句,但是在大括號外邊,語句塊是被當作一個語句的。語句塊是可以嵌套的,也就是說,一個語句塊里邊可以再包含一個或多個語句塊。JavaScript 中的變量什么是變量 從字面上看,變量是可變的量;從編程角度講,變量是用于存儲某種/某些數(shù)值的存儲器。所儲存的值,可以是數(shù)字、字符或其他的一些東西。變量的命名 變量的命名有以下要求:只包含字母、數(shù)字和/或下劃線;要以字母開頭;不能太長(其實有什么人喜歡使用又長又臭的名字呢?);不能與 JavaScript 保留字(Key Words,Reserved Words,數(shù)量繁多,不能一一列出;凡是可以用來做 JavaScript 命令的字都是保留字)重復。 而且,變量是區(qū)分大小寫的,例如,variable 和 Variable 是兩個不同的變量。不僅如此,大部分命令和“對象”(請參閱“對象化編程”章)都是區(qū)分大小寫的。 提示 給變量命名,最好避免用單個字母“a”“b”“c”等,而改用能清楚表達該變量在程序中的作用的詞語。這樣,不僅別人能更容易的了解你的程序,而且你在以后要修改程序的時候,也很快會記得該變量的作用。變量名一般用小寫,如果是由多個單詞組成的,那么第一個單詞用小寫,其他單詞的第一個字母用大寫。例如:myVariable 和 myAnotherVariable。這樣做僅僅是為了美觀和易讀,因為 JavaScript 一些命令(以后將用更具體的方法闡述“命令”一詞)都是用這種方法命名的:indexOf;charAt 等等。變量需要聲明 沒有聲明的變量不能使用,否則會出錯:“未定義”。聲明變量可以用:var = ;var 我們接觸的第一個關鍵字(即保留字)。這個關鍵字用作聲明變量。最簡單的聲明方法就是“var ;”,這將為準備內(nèi)存,給它賦初始值“null”。如果加上“= ”,則給賦予自定的初始值。數(shù)據(jù)類型 變量可以用的數(shù)據(jù)類型有:整型 只能儲存整數(shù)??梢允钦麛?shù)、0、負整數(shù),可以是十進制、八進制、十六進制。八進制數(shù)的表示方法是在數(shù)字前加“0”,如“0123”表示八進制數(shù)“123”。十六進制則是加“0x”:“0xEF”表示十六進制數(shù)“EF”。浮點型 即“實型”,能儲存小數(shù)。有資料顯示,某些平臺對浮點型變量的支持不穩(wěn)定。沒有需要就不要用浮點型。字符串型 是用引號“ ”、“ ”包起來的零個至多個字符。用單引號還是雙引號由你決定。跟語文一樣,用哪個引號開始就用哪個結束,而且單雙引號可嵌套使用:這里是JavaScript 教程。 不過跟語文不同的是,JavaScript 中引號的嵌套只能有一層。如果想再多嵌一些,你需要轉義字符:轉義字符 由于一些字符在屏幕上不能顯示,或者 JavaScript 語法上已經(jīng)有了特殊用途,在要用這些字符時,就要使用“轉義字符”。轉義字符用斜杠“”開頭: 單引號、 雙引號、n 換行符、r 回車(以上只列出常用的轉義字符)。于是,使用轉義字符,就可以做到引號多重嵌套:Micro 說:這里是JavaScript 教程。 布爾型 常用于判斷,只有兩個值可選:true(表“真”)和 false(表“假”)。true 和 false 是 JavaScript 的保留字。它們屬于“常數(shù)”。對象 關于對象,在“對象化編程”一章將詳細講到。由于 JavaScript 對數(shù)據(jù)類型的要求不嚴格,一般來說,聲明變量的時候不需要聲明類型。而且就算聲明了類型,在過程中還可以給變量賦予其他類型的值。聲明類型可以用賦予初始值的方法做到: var aString = ;這將把 aString 定義為具有空值的字符串型變量。 var anInteger = 0;這將把 anInteger 定義為值為 0 的整型。變量的賦值 一個變量聲明后,可以在任何時候對其賦值。賦值的語法是: = ;其中“=”叫“賦值符”,它的作用是把右邊的值賦給左邊的變量。下一節(jié)將討論到表達式。 JavaScript常數(shù) 有下列幾個:null 一個特殊的空值。當變量未定義,或者定義之后沒有對其進行任何賦值操作,它的值就是“null”。企圖返回一個不存在的對象時也會出現(xiàn)null值。NaN “Not a Number”。出現(xiàn)這個數(shù)值比較少見,以至于我們可以不理它。當運算無法返回正確的數(shù)值時,就會返回“NaN”值。NaN 值非常特殊,因為它“不是數(shù)字”,所以任何數(shù)跟它都不相等,甚至 NaN 本身也不等于 NaN 。true 布爾值“真”。用通俗的說法,“對”。false 布爾值“假”。用通俗的說法,“錯”。在 Math 對象中還有一系列數(shù)學常數(shù)。這將在討論“對象化編程”時談到。表達式與運算符表達式 與數(shù)學中的定義相似,表達式是指具有一定的值的、用運算符把常數(shù)和變量連接起來的代數(shù)式。一個表達式可以只包含一個常數(shù)或一個變量。運算符可以是四則運算符、關系運算符、位運算符、邏輯運算符、復合運算符。下表將這些運算符從高優(yōu)先級到低優(yōu)先級排列:括號(x) x中括號只用于指明數(shù)組的下標求反、自加、自減-x返回 x 的相反數(shù)!x返回與 x (布爾值)相反的布爾值x+x 值加 1,但仍返回原來的 x 值x-x 值減 1,但仍返回原來的 x 值 +xx 值加 1,返回后來的 x 值-xx 值減 1,返回后來的 x 值乘、除x*y返回 x 乘以 y 的值x/y返回 x 除以 y 的值x%y返回 x 與 y 的模(x 除以y 的余數(shù))加、減x+y返回 x 加 y 的值x-y返回 x 減 y 的值關系運算xy x=y xy當符合條件時返回 true 值,否則返回 false 值等于、不等于x=y當 x 等于 y 時返回 true 值,否則返回 false 值x!=y當 x 不等于 y 時返回 true 值,否則返回 false 值位與x&y當兩個數(shù)位同時為 1 時,返回的數(shù)據(jù)的當前數(shù)位為 1,其他情況都為 0位異或xy兩個數(shù)位中有且只有一個為 0 時,返回 0,否則返回 1位或x|y兩個數(shù)位中只要有一個為 1,則返回 1;當兩個數(shù)位都為零時才返回零位運算符通常會被當作邏輯運算符來使用。它的實際運算情況是:把兩個操作數(shù)(即 x 和 y)化成二進制數(shù),對每個數(shù)位執(zhí)行以上所列工作,然后返回得到的新二進制數(shù)。由于“真”值在電腦內(nèi)部(通常)是全部數(shù)位都是 1 的二進制數(shù),而“假”值則是全部是 0 的二進制數(shù),所以位運算符也可以充當邏輯運算符。邏輯與x&y當 x 和 y 同時為 true 時返回 true,否則返回 false邏輯或x|y當 x 和 y 任意一個為 true 時返回 true,當兩者同時為 false 時返回 false邏輯與/或有時候被稱為“快速與/或”。這是因為當?shù)谝徊僮鲾?shù)(x)已經(jīng)可以決定結果,它們將不去理會 y 的值。例如,false & y,因為x = false,不管 y 的值是什么,結果始終是 false,于是本表達式立即返回 false,而不論 y 是多少,甚至 y 可以導致出錯,程序也可以照樣運行下去。 條件c?x:y當條件 c 為 true 時返回 x 的值(執(zhí)行 x 語句),否則返回 y 的值(執(zhí)行 y 語句)賦值、復合運算x=y把 y 的值賦給 x,返回所賦的值x+=y x-=y x*=yx/=y x%=yx 與 y 相加/減/乘/除/求余,所得結果賦給 x,并返回 x 賦值后注意 所有與四則運算有關的運算符都不能作用在字符串型變量上。字符串可以使用 +、+= 作為連接兩個字符串之用。提示 請密切注意運算的優(yōu)先級。編程時如果不記得運算符的優(yōu)先級,可以使用括號( )。例如:(a = 0)|(b = 0)。一些用來賦值的表達式,由于有返回的值,可以加以利用。例如,用以下語句:a = b = c = 10,可以一次對三個變量賦值。語句下面將開始討論 JavaScript 基本編程命令,或者叫“語句”。注釋像其他所有語言一樣,JavaScript 的注釋在運行時也是被忽略的。注釋只給程序員提供消息。JavaScript 注釋有兩種:單行注釋和多行注釋。單行注釋用雙反斜杠“/”表示。當一行代碼有“/”,那么,“/”后面的部分將被忽略。而多行注釋是用“/*”和“*/”括起來的一行到多行文字。程序執(zhí)行到“/*”處,將忽略以后的所有文字,直到出現(xiàn)“*/”為止。提示 如果你的程序需要草稿,或者需要讓別人閱讀,注釋能幫上大忙。養(yǎng)成寫注釋的習慣,能節(jié)省你和其他程序員的寶貴時間,使他們不用花費多余的時間琢磨你的程序。在程序調(diào)試的時候,有時需要把一段代碼換成另一段,或者暫時不要一段代碼。這時最忌用 Delete 鍵,如果想要回那段代碼怎么辦?最好還是用注釋,把暫時不要的代碼“隱”去,到確定方法以后再刪除也不遲。if 語句 if ( ) else ;本語句有點象條件表達式“?:”:當為真時執(zhí)行,否則,如果 else 部分存在的話,就執(zhí)行。與“?:”不同的是,if 只是一條語句,不會返回數(shù)值。是布爾值,必須用小括號括起來;和都只能是一個語句,欲使用多條語句,請用語句塊。注意 請看下例: if (a = 1)if (b = 0) alert(a+b);elsealert(a-b);本代碼企圖用縮進的方法說明 else 是對應 if (a = 1) 的,但是實際上,由于 else 與 if (b = 0) 最相近,本代碼不能按作者的想法運行。正確的代碼是 if (a = 1) if (b = 0) alert(a+b); else alert(a-b);提示 一行代碼太長,或者涉及到比較復雜的嵌套,可以考慮用多行文本,如上例,if (a = 1) 后面沒有立即寫上語句,而是換一行再繼續(xù)寫。瀏覽器不會混淆的,當它們讀完一行,發(fā)現(xiàn)是一句未完成語句,它們會繼續(xù)往下讀。使用縮進也是很好的習慣,當一些語句與上面的一兩句語句有從屬關系時,使用縮進能使程序更易讀,方便程序員進行編寫或修改工作。循環(huán)體 for (=; ; ) ;本語句的作用是重復執(zhí)行,直到為 false 為止。它是這樣運作的:首先給賦,然后*判斷(應該是一個關于的條件表達式)是否成立,如果成立就執(zhí)行,然后按對作累加,回到“*”處重復,如果不成立就退出循環(huán)。這叫做“for循環(huán)”。下面看看例子。 for (i = 1; i 10; i+) document.write(i);本語句先給 i 賦初始值 1,然后執(zhí)行 document.write(i)語句(作用是在文檔中寫 i 的值,請參越“對象化編程”一章);重復時 i+,也就是把 i 加 1;循環(huán)直到 i=10 時結束。結果是在文檔中輸出了“123456789”。和 if 語句一樣,只能是一行語句,如果想用多條語句,你需要用語句塊。與其他語言不同,JavaScript 的 for 循環(huán)沒有規(guī)定循環(huán)變量每次循環(huán)一定要加一或減一,可以是任意的賦值表達式,如 i+=3、i*=2、i-=j 等都成立。提示 適當?shù)氖褂?for 循環(huán),能使 HTML 文檔中大量的有規(guī)律重復的部分簡化,也就是用 for 循環(huán)重復寫一些 HTML 代碼,達到提高網(wǎng)頁下載速度的目的。不過請在 Netscape 中重復進行嚴格測試,保證通過了才好把網(wǎng)頁傳上去。作者曾試過多次因為用 for 循環(huán)向文檔重復寫 HTML 代碼而導致 Netscape“猝死”。IE 中絕對沒有這種事情發(fā)生,如果你的網(wǎng)也是只給 IE 看的,用多多的 for 也沒問題。除了 for 循環(huán),JavaScript 還提供 while 循環(huán)。 while () ;比 for 循環(huán)簡單,while 循環(huán)的作用是當滿足時執(zhí)行。while 循環(huán)的累加性質沒有 for 循環(huán)強。也只能是一條語句,但是一般情況下都使用語句塊,因為除了要重復執(zhí)行某些語句之外,還需要一些能變動所涉及的變量的值的語句,否則一但踏入此循環(huán),就會因為條件總是滿足而一直困在循環(huán)里面,不能出來。這種情況,我們習慣稱之為“死循環(huán)”。死循環(huán)會弄停當時正在運行的代碼、正在下載的文檔,和占用很大的內(nèi)存,很可能造成死機,應該盡最大的努力避免。break 和 continue有時候在循環(huán)體內(nèi),需要立即跳出循環(huán)或跳過循環(huán)體內(nèi)其余代碼而進行下一次循環(huán)。break 和 continue 幫了我們大忙。break;本語句放在循環(huán)體內(nèi),作用是立即跳出循環(huán)。continue;本語句放在循環(huán)體內(nèi),作用是中止本次循環(huán),并執(zhí)行下一次循環(huán)。如果循環(huán)的條件已經(jīng)不符合,就跳出循環(huán)。例 for (i = 1; i = 0 & score 60) result = fail; else if (score 80) result = pass; else if (score 90) result = good; else if (score = 100) result = excellent; else result = error;看起來沒有問題,但使用太多的 if 語句的話,程序看起來有點亂。switch 語句就是解決這種問題的最好方法。 switch (e) case r1: (注意:冒號) . break;case r2: . break;.default: . 這一大段的作用是:計算 e 的值(e 為表達式),然后跟下邊“case”后的 r1、r2比較,當找到一個相等于 e 的值時,就執(zhí)行該“case”后的語句,直到遇到 break 語句或 switch 段落結束(“”)。如果沒有一個值與 e 匹配,那么就執(zhí)行“default:”后邊的語句,如果沒有 default 塊,switch 語句結束。上邊的 if 段用 switch 改寫就是: switch (parseInt(score / 10) case 0:case 1:case 2:case 3:case 4:case 5: result = fail; break;case 6:case 7: result = pass; break;case 8: result = good; break;case 9: result = excellent; break;default: if (score = 100) result = excellent; else result = error;其中 parseInt()方法是以后會介紹的,作用是取整。最后 default 段用的 if 語句,是為了不把 100 分當錯誤論(parseInt(100 / 10) = 10)。JavaScipt基本教程之對象的基本知識JavaScript 是使用“對象化編程”的,或者叫“面向對象編程”的。所謂“對象化編程”,意思是把 JavaScript 能涉及的范圍劃分成大大小小的對象,對象下面還繼續(xù)劃分對象直至非常詳細為止,所有的編程都以對象為出發(fā)點,基于對象。小到一個變量,大到網(wǎng)頁文檔、窗口甚至屏幕,都是對象。這一章將“面向對象”講述 JavaScript 的運行情況。對象的基本知識 對象是可以從 JavaScript“勢力范圍”中劃分出來的一小塊,可以是一段文字、一幅圖片、一個表單(Form)等等。每個對象有它自己的屬性、方法和事件。對象的屬性是反映該對象某些特定的性質的,例如:字符串的長度、圖像的長寬、文字框(Textbox)里的文字等等;對象的方法能對該對象做一些事情,例如,表單的“提交”(Submit),窗口的“滾動”(Scrolling)等等;而對象的事件就能響應發(fā)生在對象上的事情,例如提交表單產(chǎn)生表單的“提交事件”,點擊連接產(chǎn)生的“點擊事件”。不是所有的對象都有以上三個性質,有些沒有事件,有些只有屬性。引用對象的任一“性質”用“.”這種方法?;緦ο蟋F(xiàn)在我們要復習以上學過的內(nèi)容了把一些數(shù)據(jù)類型用對象的角度重新學習一下。Number “數(shù)字”對象。這個對象用得很少,作者就一次也沒有見過。不過屬于“Number”的對象,也就是“變量”就多了。屬性MAX_VALUE 用法:Number.MAX_VALUE;返回“最大值”。MIN_VALUE 用法:Number.MIN_VALUE;返回“最小值”。NaN 用法:Number.NaN 或 NaN;返回“NaN”?!癗aN”(不是數(shù)值)在很早就介紹過了。NEGATIVE_INFINITY 用法:Number.NEGATIVE_INFINITY;返回:負無窮大,比“最小值”還小的值。POSITIVE_INFINITY 用法:Number.POSITIVE_INFINITY;返回:正無窮大,比“最大值”還大的值。方法toString() 用法:.toString();返回:字符串形式的數(shù)值。如:若 a = 123;則 a.toString() = 123。String 字符串對象。聲明一個字符串對象最簡單、快捷、有效、常用的方法就是直接賦值。屬性length 用法:.length;返回該字符串的長度。方法charAt() 用法:.charAt();返回該字符串位于第位的單個字符。注意:字符串中的一個字符是第 0 位的,第二個才是第 1 位的,最后一個字符是第 length - 1 位的。charCodeAt() 用法:.charCodeAt();返回該字符串位于第位的單個字符的 ASCII 碼。fromCharCode() 用法:String.fromCharCode(a, b, c.);返回一個字符串,該字符串每個字符的 ASCII 碼由 a, b, c. 等來確定。indexOf() 用法:.indexOf(, );該方法從中查找(如果給出就忽略之前的位置),如果找到了,就返回它的位置,沒有找到就返回“-1”。所有的“位置”都是從零開始的。lastIndexOf() 用法:.lastIndexOf(, );跟 indexOf() 相似,不過是從后邊開始找。split() 用法:.split();返回一個數(shù)組,該數(shù)組是從中分離開來的,決定了分離的地方,它本身不會包含在所返回的數(shù)組中。例如:1&2&345&678.split(&)返回數(shù)組:1,2,345,678。關于數(shù)組,我們等一下就討論。substring() 用法:.substring(, );返回原字符串的子字符串,該字符串是原字符串從位置到位置的前一位置的一段。 - = 返回字符串的長度(length)。如果沒有指定或指定得超過字符串長度,則子字符串從位置一直取到原字符串尾。如果所指定的位置不能返回字符串,則返回空字符串。substr() 用法:.substr(, );返回原字符串的子字符串,該字符串是原字符串從位置開始,長度為的一段。如果沒有指定或指定得超過字符串長度,則子字符串從位置一直取到原字符串尾。如果所指定的位置不能返回字符串,則返回空字符串。toLowerCase() 用法:.toLowerCase();返回把原字符串所有大寫字母都變成小寫的字符串。toUpperCase() 用法:.toUpperCase();返回把原字符串所有小寫字母都變成大寫的字符串。Array 數(shù)組對象。數(shù)組對象是一個對象的集合,里邊的對象可以是不同類型的。數(shù)組的每一個成員對象都有一個“下標”,用來表示它在數(shù)組中的位置(既然是“位置”,就也是從零開始的啦)。數(shù)組的定義方法:var = new Array();這樣就定義了一個空數(shù)組。以后要添加數(shù)組元素,就用: = .;注意這里的方括號不是“可以省略”的意思,數(shù)組的下標表示方法就是用方括號括起來。如果想在定義數(shù)組的時候直接初始化數(shù)據(jù),請用:var = new Array(, , .);例如,var myArray = new Array(1, 4.5, Hi); 定義了一個數(shù)組 myArray,里邊的元素是:myArray0 = 1; myArray1 = 4.5; myArray2 = Hi。但是,如果元素列表中只有一個元素,而這個元素又是一個正整數(shù)的話,這將定義一個包含個空元素的數(shù)組。注意:JavaScript只有一維數(shù)組!千萬不要用“Array(3,4)”這種愚蠢的方法來定義 4 x 5 的二維數(shù)組,或者用“myArray2,3”這種方法來返回“二維數(shù)組”中的元素。任意“myArray.,3”這種形式的調(diào)用其實只返回了“myArray3”。要使用多維數(shù)組,請用這種虛擬法:var myArray = new Array(new Array(), new Array(), new Array(), .);其實這是一個一維數(shù)組,里邊的每一個元素又是一個數(shù)組。調(diào)用這個“二維數(shù)組”的元素時:myArray23 = .;屬性length 用法:.length;返回:數(shù)組的長度,即數(shù)組里有多少個元素。它等于數(shù)組里最后一個元素的下標加一。所以,想添加一個元素,只需要:myArraymyArray.length = .。方法join() 用法:.join();返回一個字符串,該字符串把數(shù)組中的各個元素串起來,用置于元素與元素之間。這個方法不影響數(shù)組原本的內(nèi)容。reverse() 用法:.reverse();使數(shù)組中的元素順序反過來。如果對數(shù)組1, 2, 3使用這個方法,它將使數(shù)組變成:3, 2, 1。slice() 用法:.slice(, );返回一個數(shù)組,該數(shù)組是原數(shù)組的子集,始于,終于。如果不給出,則子集一直取到原數(shù)組的結尾。sort() 用法:.sort();使數(shù)組中的元素按照一定的順序排列。如果不指定,則按字母順序排列。在這種情況下,80 是比 9 排得前的。如果指定,則按所指定的排序方法排序。比較難講述,這里只將一些有用的介紹給大家。按升序排列數(shù)字:function sortMethod(a, b) return a - b;myArray.sort(sortMethod);按降序排列數(shù)字:把上面的“a - b”該成“b - a”。有關函數(shù),請看下面。Math “數(shù)學”對象,提供對數(shù)據(jù)的數(shù)學計算。下面所提到的屬性和方法,不再詳細說明“用法”,大家在使用的時候記住用“Math.”這種格式。屬性E 返回常數(shù) e (2.718281828.)。LN2 返回 2 的自然對數(shù) (ln 2)。LN10 返回 10 的自然對數(shù) (ln 10)。LOG2E 返回以 2 為低的 e 的對數(shù) (log2e)。LOG10E 返回以 10 為低的 e 的對數(shù) (log10e)。PI 返回(3.1415926535.)。SQRT1_2 返回 1/2 的平方根。SQRT2 返回 2 的平方根。方法abs(x) 返回 x 的絕對值。acos(x) 返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示。asin(x) 返回 x 的反正弦值。atan(x) 返回 x 的反正切值。atan2(x, y) 返回復平面內(nèi)點(x, y)對應的復數(shù)的幅角,用弧度表示,其值在 - 到 之間。ceil(x) 返回大于等于 x 的最小整數(shù)。cos(x) 返回 x 的余弦。exp(x) 返回 e 的 x 次冪 (ex)。floor(x) 返回小于等于 x 的最大整數(shù)。log(x) 返回 x 的自然對數(shù) (ln x)。max(a, b) 返回 a, b 中較大的數(shù)。min(a, b) 返回 a, b 中較小的數(shù)。pow(n, m) 返回 n 的 m 次冪 (nm)。random() 返回大于 0 小于 1 的一個隨機數(shù)。round(x) 返回 x 四舍五入后的值。sin(x) 返回 x 的正弦。sqrt(x) 返回 x 的平方根。tan(x) 返回 x 的正切。Date 日期對象。這個對象可以儲存任意一個日期,從 0001 年到 9999 年,并且可以精確到毫秒數(shù)(1/1000 秒)。在內(nèi)部,日期對象是一個整數(shù),它是從 1970 年 1 月 1 日零時正開始計算到日期對象所指的日期的毫秒數(shù)。如果所指日期比 1970 年早,則它是一個負數(shù)。所有日期時間,如果不指定時區(qū),都采用“UTC”(世界時)時區(qū),它與“GMT”(格林威治時間)在數(shù)值上是一樣的。定義一個日期對象:var d = new Date;這個方法使 d 成為日期對象,并且已有初始值:當前時間。如果要自定初始值,可以用:var d = new Date(99, 10, 1); /99 年 10 月 1 日var d = new Date(Oct 1, 1999); /99 年 10 月 1 日等等方法。最好的方法就是用下面介紹的“方法”來嚴格的定義時間。方法以下有很多“g/setUTCXXX”這樣的方法,它表示既有“getXXX”方法,又有“setXXX”方法?!癵et”是獲得某個數(shù)值,而“set”是設定某個數(shù)值。如果帶有“UTC”字母,則表示獲得/設定的數(shù)值是基于 UTC 時間的,沒有則表示基于本地時間或瀏覽期默認時間的。如無說明,方法的使用格式為:“.”,下同。g/setUTCFullYear() 返回/設置年份,用四位數(shù)表示。如果使用“x.setUTCFullYear(99)”,則年份被設定為 0099 年。g/setUTCYear()返回/設置年份,用兩位數(shù)表示。設定的時候瀏覽器自動加上“19”開頭,故使用“x.setUTCYear(00)”把年份設定為 1900 年。g/setUTCMonth()返回/設置月份。g/setUTCDate()返回/設置日期。g/setUTCDay()返回/設置星期,0 表示星期天。g/setUTCHours()返回/設置小時數(shù),24小時制。g/setUTCMinutes()返回/設置分鐘數(shù)。g/setUTCSeconds()返回/設置秒鐘數(shù)。g/setUTCMilliseconds()返回/設置毫秒數(shù)。g/setTime() 返回/設置時間,該時間就是日期對象的內(nèi)部處理方法:從 1970 年 1 月 1 日零時正開始計算到日期對象所指的日期的毫秒數(shù)。如果要使某日期對象所指的時間推遲 1 小時,就用:“x.setTime(x.getTime() + 60 * 60 * 1000);”(一小時 60 分,一分 60 秒,一秒 1000 毫秒)。getTimezoneOffset() 返回日期對象采用的時區(qū)與格林威治時間所差的分鐘數(shù)。在格林威治東方的市區(qū),該值為負,例如:中國時區(qū)(GMT+0800)返回“-480”。toString() 返回一個字符串,描述日期對象所指的日期。這個字符串的格式類似于:“Fri Jul 21 15:43:46 UTC+0800 2000”。toLocaleString() 返回一個字符串,描述日期對象所指的日期,用本地時間表示格式。如:“2000-07-21 15:43:46”。toGMTString() 返回一個字符串,描述日期對象所指的日期,用 GMT 格式。toUTCString() 返回一個字符串,描述日期對象所指的日期,用 UTC 格式。parse() 用法:Date.parse();返回該日期對象的內(nèi)部表達方式。全局對象全局對象從不現(xiàn)形,它可以說是虛擬出來的,目的在于把全局函數(shù)“對象化”。在 Microsoft JScript 語言參考中,它叫做“Global 對象”,但是引用它的方法和屬性從來不用“Global.xxx”(況且這樣做會出錯),而直接用“xxx”。屬性NaN 一早就說過了。方法eval() 把括號內(nèi)的字符串當作標準語句或表達式來運行。isFinite() 如果括號內(nèi)的數(shù)字是“有限”的(介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之間)就返回 true;否則返回 false。isNaN() 如果括號內(nèi)的值是“NaN”則返回 true 否則返回 false。parseInt() 返回把括號內(nèi)的內(nèi)容轉換成整數(shù)之后的值。如果括號內(nèi)是字符串,則字符串開頭的數(shù)字部分被轉換成整數(shù),如果以字母開頭,則返回“NaN”。parseFloat() 返回把括號內(nèi)的字符串轉換成浮點數(shù)之后的值,字符串開頭的數(shù)字部分被轉換成浮點數(shù),如果以字母開頭,則返回“NaN”。toString() 用法:.toString();把對象轉換成字符串。如果在括號中指定一個數(shù)值,則轉換過程中所有數(shù)值轉換成特定進制。escape() 返回括號中的字符串經(jīng)過編碼后的新字符串。該編碼應用于 URL,也就是把空格寫成“%20”這種格式?!?”不被編碼,如果要“+”也被編碼,請用:escape(., 1)。unescape() 是 escape() 的反過程。解編括號中字符串成為一般字符串。函數(shù)函數(shù)的定義 所謂“函數(shù)”,是有返回值的對象或對象的方法。 函數(shù)的種類 常見的函數(shù)有:構造函數(shù),如 Array(),能構造一個數(shù)組;全局函數(shù),即全局對象里的方法;自定義函數(shù);等等。 自定義函數(shù) 定義函數(shù)用以下語句: function 函數(shù)名(參數(shù)集) . return ; . 其中,用在 function 之后和函數(shù)結尾的大括號是不能省去的,就算整個函數(shù)只有一句。 函數(shù)名與變量名有一樣的起名規(guī)定,也就是只包含字母數(shù)字下劃線、字母排頭、不能與保留字重復等。 參數(shù)集可有可無,但括號就一定要有。 參數(shù) 是函數(shù)外部向函數(shù)內(nèi)部傳遞信息的橋梁,例如,想叫一個函數(shù)返回 3 的立方,你就要讓函數(shù)知道“3”這個數(shù)值,這時候就要有一個變量來接收數(shù)值,這種變量叫做參數(shù)。 參數(shù)集是一個或多個用逗號分隔開來的參數(shù)的集合,如:a, b, c。 函數(shù)的內(nèi)部有一至多行語句,這些語句并不會立即執(zhí)行,而只當有其它程序調(diào)用它時才執(zhí)行。這些語句中可能包含“return”語句。在執(zhí)行一個函數(shù)的時候,碰到 return 語句,函數(shù)立刻停止執(zhí)行,并返回到調(diào)用它的程序中。如果“return”后帶有,則退出函數(shù)的同時返回該值。 在函數(shù)的內(nèi)部,參數(shù)可以直接當作變量來使用,并可以用 var 語句來新建一些變量,但是這些變量都不能被函數(shù)外部的過程調(diào)用。要使函數(shù)內(nèi)部的信息能被外部調(diào)用,要么使用“return”返回值,要么使用全局變量。 全局變量 在 Script 的“根部”(非函數(shù)內(nèi)部)的“var”語句所定義的變量就是全局變量,它能在整個過程的任意地方被調(diào)用、更改。 例 function addAll(a, b, c) return a + b + c;var total = addAll(3, 4, 5); 這個例子建立了一個叫“addAll”的函數(shù),它有 3 個參數(shù):a, b, c,作用是返回三個數(shù)相加的結果。在函數(shù)外部,利用“var total = addAll(3, 4, 5);”接收函數(shù)的返回值。 更多的時候,函數(shù)是沒有返回值的,這種函數(shù)在一些比較強調(diào)嚴格的語言中是叫做“過程”的,例如 Basic 類語言的“Sub”、Pascal 語言的“procedure”。 屬性 arguments 一個數(shù)組,反映外部程序調(diào)用函數(shù)時指定的參數(shù)。用法:直接在函數(shù)內(nèi)部調(diào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論