【黑馬程序員】8. JavaScript

---------------------- ASP.Net+Android+IOS開發.Net培訓、期待與您交流! ----------------------

一、        JavaScript簡介

JavaScript是一種在瀏覽器端運行的語言,是一種前端語言,與後臺無關。

JavaScriptJAVA沒有直接的關係,唯一的關係是JavaScript原名爲Live Script,後來吸收了JAVA的一些特性,升級爲JavaScriptJavaScript有時被簡稱爲JS

       JavaScript是解釋型語言,無需編譯就可以直接運行,這樣哪怕程序中有的部分語法有錯誤,但沒有語法錯誤的部分還是會正確執行的;JS是非常靈活的動態語言,不像C#等靜態語言那樣嚴謹。開發工具中的JS自動完成功能只是一個輔助,點出來的成員可能不能調用,而點不出來的成員或許還能調用,所以不能過於依賴開發工具。

       JavaScriptHTML一樣,也可以用記事本等文本編輯器編寫,不過由於效率問題和出現語法錯誤很難發現等原因,還是用Visual Studio進行開發更爲高效。

二、        第一個JS程序

<head>
    <title></title>
    <script type="text/javascript">
        alert(newDate().toLocaleDateString());
    </script>
</head>
說明:上述代碼實現的功能是,彈出一個消息框顯示系統當前的日期。

alert 函數是彈出一個消息窗口,效果相當於WinForm中的MessageBox

new Date() 是創建一個Date類的對象,默認值就是當前日期。

JavaScript代碼需要放在<script type="text/javascript"></script>標籤中,<script>標籤可以放在<head>、<body>等任意位置,一個HTML頁中可以有不只一個<script>標籤。放在<head>中的<script>,在<body>加載之前就已經運行完畢,而寫在<body>中的<script>是隨着頁面的加載自上而下一個個執行的。

當然,JS除了可以直接寫在HTML頁中,還可以將JS寫到一個單獨的Jscript文件中,此文件是以.js爲擴展名的,寫入.js文件後,需要在HTML頁中引用它,引用的方法見如下代碼:

<script src="share.js" type="text/javascript">
</script>
其中,src屬性指向的就是你的.js文件的文件名。引用Jscript文件的代碼可以寫在在<head>、<body>等任意位置。

三、        事件

事件(event)

用於描述發生了什麼事情,用戶的鼠標或鍵盤操作(點擊,文字輸入,下拉框的選中)以及其他的頁面操作(頁面的加載和卸載)都會觸發相應的事件。

JavaScript中也有事件的概念,當按鈕被點擊時也可以執行JavaScript代碼。

如:      

 <input type="button" value="點我" οnclick="alert('我是個Button')" />

當按鈕被點擊時執行控件的onclick屬性所指向的代碼。上述代碼功能:當點擊按鈕時,彈出一個消息窗口顯示“我是個Button”。

       在超鏈接<a>href屬性中執行JavaScript代碼的方法:

<a href="javascript:alert('我是超鏈接')">再點我</a>


如上代碼中可以發現,在超鏈接的href屬性中執行JavaScript程序時需要加上“javascript:”,這是因爲在href中它並不是一個事件,而瀏覽器會把“javascript:”看成類似於“http://”、“ftp://”一樣的網絡協議把它交給JS解析引擎處理。

只有在“href”中執行JS程序時才需要加“javascript:”。

超鏈接中的點擊事件和其它控件的差不多,都是放在onclick中的。

常用的事件類型:

OnClick 組件被點擊

onDbClick 組件被雙擊

onLoad 頁面加載

onUnload 頁面卸載

onChange 組件內容發生變化或條目選中狀態發生變化

onMouseMove 鼠標移動

onFocus 獲得焦點

onBlur 失去焦點

四、        JavaScript變量

命名規則:

<1>必須以字母、下劃線或美元符號開頭,後面可以跟字母、下劃線、美元符號、數字

<2>變量名要區分大小寫

<3>不允許使用javascript關鍵字做變量名。

<4>使用var聲明變量,變量聲明時不指定具體數據類型,其具體數據類型由給其賦的值決定。也可以不經聲明而直接使用變量,但必須先賦值再取值。

JavaScript中的字符串既可以用雙引號也可以用單引號。

JavaScript中的nullundefined表示不同的意思,null表示變量的值爲空,而undefined表示變量未指向任何對象,也就是沒有初始化,表示“沒有”。

JavaScript是一種弱類型的語言,不強調變量的類型具體是什麼,在JS中聲明變量用關鍵字var聲明的變量可以重複賦值。如下代碼在JS中是正確的:

var i=10;
i="abc";
alert(i);
也就是說變量i 可以指向任意類型的值。

五、        JavaScript函數的聲明

JS中聲明函數時不需要指定返回值類型和參數類型。函數聲明以關鍵字function開頭。      

<script type="text/javascript">
        //JS中聲明一個函數,以function關鍵字開頭,不需要指定返回值類型和參數類型
        function add(i1,i2) {  
            return i1+i2;
        }        
        alert(add(10,10));//調用函數
</script>
JS中並不要求所有的路徑都要有返回值。

如果函數中有返回值那麼就返回該返回值;否則就返回“undefined”。

 

JS中的匿名函數:類似於C#中的匿名函數,先聲明一個匿名函數,然後用一個委託指向這個匿名函數,就可以把這個委託當作匿名函數來用了,在JS中也是相同的原理。

             

//JS中聲明一個匿名函數,定義一個委託變量f1來指向這個匿名函數
        var f1=function (i1,i2) {
            return i1+i2;
        };
        alert(f1(5,5));//通過委託來調用匿名函數 

//聲明一個匿名函數,立即使用
        alert(function (i1,i2) { returni1+i2}(5,10)); 
六、        JavaScript面向對象基礎

JavaScript中沒有類的概念,而是用函數閉包(closure)來模擬類的實現C#中的stringDate等類,在JavaScript中都被叫做“對象”。

<script type="text/javascript">
        function Person(name,age) {
        this.Name=name;//動態添加屬性
         this.Age=age;
        this.SayHello=function () { alert("你好,"+this.Name) };//匿名函數
        }
       var p1=newPerson("jack",30);//new一個Person“類”的對象
        p1.SayHello();
</script>
function Person(name,age)可以看作是聲明構造函數,NameAge這些屬性也是動態添加的。

七、        Array對象

JS中的Array對象就是數組,它是一個動態數組,而且是一個像C#中的數組、ArrayList、Hashtable等的超強綜合體。

數組是多個相同類型數據的組合,實現對數據的統一管理。

Javascript 數組的聲明方式:

var a = new Array();

var b = new Array(size);

var c = new Array(v1,v2,v3, …);

var d = [ 1,2,3,4...];

Javascript 數組長度可變,數組對象的length 屬性表明了該數組的長度。

數組元素訪問格式:數組名[元素下標]

有效元素下標的範圍:0~length-1;

Shift:刪除數組的第一項,並返回刪除元素的值;如果數組爲空則返回undefined

Unshift:將元素添加到數組的開關,並返回數組的長度。

Pop:刪除數組的最後一項的值,如果數組爲空則返回undefined

Push:將數組添加到另一個數組的尾部,並返回數組的長度。

Concat:返回一個新的數組,將數組添加到原數組中。

Reversse:數組反轉a.reverse()

Sort:數組排序。

Slice(start,end):截取數組元素。

Join(separator):將數組的元素以separator爲分隔符組成新的字符串,separator默認是以逗號分隔。

        var arr=newArray();
        arr[0] ="tom";//添加數組元素
         arr[1] ="jack";
        arr[2] ="john";
        //遍歷數組中的元素
         for (var i=0; i<arr.length; i++) {
            alert(arr[i]);       //打印的是數組的 Value
        }
       //數組的簡化聲明方式:
        var m= [5,6,7,8];
       //JS中的for循環可以像C#中的foreach一樣用
        for (var einm) {
             alert(e); //打印的是數組的 Key
       }

Array當作字典來用:

            //聲明一個Array對象用作Dictionary並進行初始化
              var dict= { "tom":30,"jack":28,"Mecheal":35 };
            alert(dict["Mecheal"]);

普通數組可以看做是Dictionary的特例,也就是Key爲已知的0,1,2,3,4…...。

 

 

---------------------- ASP.Net+Android+IOS開發.Net培訓、期待與您交流! ----------------------

詳細請查看:http://edu.csdn.net

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章