一、基本概念
JavaScript是一種基於對象(Object Based)和事件驅動(Event Driver)的指令碼語言,它本身提供了非常豐富的內部對象供開發人員使用。
JavaScript是一種解釋性程式設計語言,其原始碼在發往用戶端執行之前不需經過編譯,而是將文字格式設定的字元代碼發送給用戶端由瀏覽器解釋執行。
下面是第一個JavaScript程式,用於說明其如何被嵌入到HTML文檔中的:
<html>
<head>
My first JavaScript!
</head>
<body>
This is a normal HTML document.
<script language="JavaScript">
<!--
document.write("這是用JavaScript顯示的!")
//-->
</script>
Back in HTML again.
</body>
</html>
-----------------------------------------------------------------------
JavaScript代碼由<script language="JavaScript"> ... </script>標識,之間可加入JavaScript指令碼。
通過<!-- ... //-->標識說明:若不認識JavaScript代碼的瀏覽器,則所有在其中的標識均被忽略;若認識,則執行其結果。
document.write()是JavaScript的視窗對象方法,其功能是顯示一串文字到HTML檔案中,JavaScript還有很多類似的方法。
二、資料類型
JavaScript提供4種基本的資料類型來處理數字和文字,具體如下:
類型 |
例子 |
解釋 |
String字串型 |
“John” |
引號內的一串字元 |
Number數值型 |
3.21 |
任何不在引號內的數字 |
Boolean布爾型 |
true或者false |
僅能取這兩者之一的值 |
Null空值 |
null |
空值 |
三、變數
變數的命名規則與其它程式設計語言類似,變數事先可以聲明也可以直接使用,變數的類型在賦值時由賦值資料的類型確定:
var mytest; //聲明變數
var mytest="This is a book" //定義變數並賦值
x=true; //直接使用
JavaScript中,全域變數是定義在所有函數體之外,其作用範圍是整個函數;而局部變數是定義在函數體之內,只對該函數可見,其它函數不可見。
四、常量
整型常量:可以使用十六進位、八進位和十進位來表示其值。
實型常量:用整數加小數部分組成,也可以用科學記號標記法表示,比如:12.32、5E7。
布爾值:只能是Ture或者False。
字元型常量:使用單引號或雙引號括起來幾個字元表示,比如:“Hello World”。
空值:Null,表示什麼也沒有,比如:試圖引用一個沒定義的變數,則返回一個Null值。
特殊字元:與C語言一樣,JavaScript中也有些以反斜線(/)開頭的不可顯示的特殊字元,即控制字元。
五、運算式與運算子
JavaScript運算式是變數、常量、運算子等的集合。
JavaScript運算子與C語言類似,也有優先順序,但建議用括弧來改變執行順序而不依賴優先順序。
JavaScript也有單目運算子、雙目運算子和三目運算子,規則同C語言。
三目運算子:運算元?結果1:結果2。
雙目算術運算子包括:+、-、*、/、%、|、&、<<、>>、>>>(右移,零填充)。
單目算術運算子包括:-(取反)、~(取補)、++、--。
比較子包括:<、>、<=、>=、==、!=。
邏輯運算子包括:!、&=、&、!=、|、^=、^、?:、||、==、!=。
六、函數
JavaScript函數可以封裝那些在程式中可能要多次用到的模組,並且可作為事件驅動的結果所調用的程式,從而實現一個函數與事件驅動相關聯。
函數定義的基本格式如下:
function 函數名(參數,變元) {
函數體;
return 運算式;
}
當調用函數時,所用變數或字面量均可作為變元傳遞,傳回值通過return返回,函數名對大小寫敏感。
函數中的參數可以是多個,類似於C語言中變長參數,參數個數可以通過arguments.length來獲得。
JavaScript中有一批系統函數或內部方法,它們與任何對象無關,使用這些函數不需要建立任何執行個體,可直接使用,比如:
返回字串運算式中的值,即eval(字串運算式),例如:test=eval("8+9+5/2");
返回字串ASCII碼,即unEscape(string);
返回字元的編碼,即escape(character);
返回實數,即parseFloat(floustring);
返回不同進位的數,即parseInt(numberstring, rad.X);其中,rad.X是數的進位,numberstring是字串數。
七、程式流程
JavaScript中的常用程式控制流程結構如下:
1、if條件陳述式
基本格式:
if (運算式) {
語句段1;
}
else {
語句段2;
}
嵌套格式:
if (布爾值) 語句1;
else if (布爾值) 語句2;
else 語句3;
2、for迴圈語句
基本格式:
for (初始化; 條件; 增量) {
迴圈體語句段;
}
3、while迴圈語句
基本格式:
while (條件) {
迴圈體語句段;
}
4、break和continue語句
與C語言相同,使用break語句跳出迴圈體,使用continue語句跳出本層迴圈。
八、對象的使用
1、對象的基本概念
JavaScript中的對象是由屬性(Properties)和方法(Methods)兩個基本元素構成的,這兩者分別對應於物件導向中的變數與函數。
一個對象在被引用前必須存在,否則會出錯,JavaScript可以通過如下3種方式來引用對象(即要麼建立新的對象,要麼利用現存的對象):
(1)引用JavaScript內部對象;
(2)由瀏覽器環境中提供;
(3)建立新對象。
JavaScript是基於對象而不是物件導向的語言,因此,也沒有抽象、繼承、重載的概念,但提供了一些用於操作對象的語句、關鍵字和運算子:
(1)for...in語句
格式如下:
for (對象屬性名稱 in 已經對象名)
該語句的功能是將一個已知對象的所有屬性迴圈賦值給一個變數,而不是使用計數器實現,其優點是無需知道對象中屬性的個數即可進行操作。
比如:要遍曆數組中的所有元素,如果用普通for迴圈就需要知道數組元素個數來控制下標,但是如果用該語句就簡單多了:
for (var prop in object)
document.write(object[prop]);
上面代碼在迴圈體中,for自動將對象的屬性取出來複製給prop,直到迴圈體結束。
(2)with語句
格式如下:
with object {
}
在該語句體內,任何對變數的引用都被認為是對這個對象的屬性的操作,以節省代碼。
(3)this關鍵字
this是對當前對象的引用。
(4)new運算子
使用new運算子來建立一個新的對象,格式如下:
Newobject=new Object(Parameters table);
其中,Object是已經存在的對象,Newobject是新建立的對象,Parameters table是參數表,new是運算子,比如:
birthday=new Date(December 12.2014);
之後就可以使用birthday作為一個新的日期對象了。
2、對象屬性的引用
對象屬性的引用可由下列3種方式之一實現:
(1)使用點“.”運算子
university.Name="湖南省";
university.city="常德市";
university.Date="2014";
(2)通過對象的下標實現引用
universit[0]="湖南省";
university[1]="常德市";
university[2]="2014";
(3)通過字串的形式現實
university["Name"]="湖南省";
university["city"]="常德市";
university["Date"]="2014";
3、對象方法的引用
在JavaScript中對象方法的引用是非常簡單的:
ObjectName.methods();
引用math內部對象中的方法更簡單:
with(manth)
document.write(cos(30));
document.write(cos(90));
4、常用對象的屬性和方法
JavaScript提供了一些非常有用的常用內部對象和方法,提供了string(字串)、math(數值計算)和date(日期)3種對象和其它相關方法。
(1)串對象
mytest="helloworld";
串對象只有一個屬性length,表示字串中的字元個數。
串對象方法有19個,主要用於有關字串在Web頁面中的顯示、字型大小、字型顏色、字元的搜尋以及字元的大小寫轉換,主要方法如下:
錨點anchor(),比如:string.anchor(anchorName);
字元顯示控制方法:big()大字型顯示、italics()斜體字顯示、bold()粗體字顯示、blink()字元閃爍顯示、small()字元用小體字顯示、fixed()固定高亮度字顯示以及fontsize(size)控制字型大小等。
字型顏色方法:fontcolor(color)。
字串大小寫轉換:toLowerCase()轉換為小寫、toUpperCase()轉換為大寫,比如:string = stringValue.toUpperCase();
字元搜尋:indexOf[charactor,fromIndex],即從指定fromIndex位置開始搜尋第一次出現charactor的位置。
求子字串:substring(start,end),即從start開始到end的字元全部返回。
(2)算術函數math對象
math對象提供除加、減、乘、除以外的一些算術運算,比如:對數、平方根運算等。
math提供了6個屬性,即數學中常用的常數E、以10為底的自然對數LN10、以2為底的自然對數LN2、3.14159的PI、1/2的平方根SQRT1-2、2的平方根SQRT2。
math提供的主要方法包括絕對值abs()、正弦值sin()、餘弦cos()、反正玄asin()、反餘弦acos()、正切tan()、反正切atan()、四捨五入round()、平方根sqrt()、基於幾次方的值pow(base,exponent)。
(3)日期及時間對象
提供了一個有關日期和時間的對象,必須使用New運算子建立一個執行個體,比如:
MyDate=New Date();
Date對象沒有提供直接存取的屬性,只具有擷取和設定日期和時間的方法。
日期起始值:1770年1月1日00:00:00。
擷取日期和時間的方法包括返回年數getYear()、返回當月號數getMonth()、返回當日號數getDate()、返回星期幾getDay()、返回小時數getHours()、返回分鐘數getMintes()、返回秒數getSeconds()、返回毫秒數getTime()。
設定日期和時間的方法包括設定年份setYear()、設定當前日期setDate()、設定當前月份setMonth()、設定小時數setHours()、設定分鐘數setMintes()、設定秒數setSeconds()、設定毫秒數setTime()。
九、事件驅動
JavaScript是基於對象(Object-Based)的語言,這與Java不同,Java是物件導向的語言,而基於對象的基本特徵,就是採用事件驅動(Event-Driven)。它是在用圖形介面的環境下,使得一切輸入變得簡單化。通常滑鼠或熱鍵的動作稱之為事件(Event),而由滑鼠或熱鍵引發的一連串程式的動作,稱之為事件驅動(Event Driven)。而對事件進行處理的程式或函數,稱之為事件處理常式(Event Handler)。
在JavaScript中對象事件的處理通常由函數擔任,其基本格式與函數一樣,可以將函數作為事件處理常式,格式如下:
function 事件處理名(參數表){
事件處理語句集;
}
JavaScript事件驅動中的事件是通過滑鼠或熱鍵的動作引發的,它主要有以下幾個事件:
1、單擊事件onClick
當使用者單擊滑鼠按鍵時,產生onClick事件,同時,onClick指定的事件處理常式或代碼將被調用執行。能產生該事件的對象包括button(按鈕對象)、checkbox(複選框或檢查列表框)、radio(選項按鈕)、reset buttons(重設按鈕)、submit buttons(提交按鈕),例如,可通過下列按鈕啟用change():
<form>
<input type="button" value="改變" onClick="change()">
</form>
在onClick等號後,可以使用自己編寫的函數作為事件處理常式,也可以使用JavaScript中的內建函式,還可以直接使用JavaScript的代碼,比如:
<input type="button" value=" " onClick=alert("這是一個例子")>;>
2、onChange改變事件
當利用text或texturea元素輸入字元值改變時引發該事件,同時,當在select表格項中一個選項狀態改變後也會引發該事件,比如:
<form>
<input type="text" name="Test"value="Test" onChange="check(this.test)">
</form>
3、選中事件onSelect
當text或textarea對象中的文字被加亮後,引發該事件。
4、獲得焦時間點事件onFocus
當使用者單擊text或textarea以及select對象時,產生該事件,此時該對象成為前台對象。
5、失去焦點onBlur
當text對象或textarea對象以及select對象不再擁有焦點而退到後台時,引發該事件,它與onFocas事件是一個對應的關係。
6、載入檔案onLoad
當文檔載入時,產生該事件。onLoad一個作用就是在首次載入一個文檔時檢測cookie的值,並用一個變數為其賦值,使它可以被原始碼使用。
7、卸載檔案onUnload
當Web頁面退出時引發onUnload事件,並可更新cookie的狀態。
下面是一個自動裝載和自動卸載檔案的例子:
<html>
<head>
<script language="JavaScript">
<!--
function loadform(){
alert("開始自動裝載!");
}
funtion unloadform(){
alert("開始自動卸載!");
}
//-->
</script>
</head>
<body onLoad="loadform()" onUnload="unloadform()">
<a href="anther.html"> 進入調用頁面 </a>
</body>
</html>
開啟瀏覽器執行上面代碼,在裝載頁面時,會執行自動裝載,彈出“開始自動裝載”對話方塊,在關閉瀏覽器時,會彈出“開始自動卸載”對話方塊。