Ajax實踐之匿名函數判斷使用者是否存在

來源:互聯網
上載者:User

標籤:ajax   javascript   

         要想用匿名函數來實現使用者是否存在,就應該明白:什麼是匿名函數?是幹什麼的?怎麼用?結合Ajax如何??那麼就帶著疑問進入研究中:

 一、是什嗎?

       “匿名”根據字面意思理解就是沒有名字的意思。如果你能理解到這那麼你就對匿名函數有了一半的理解,即:匿名函數就是沒有實際名字,也沒有指標的函數。如:

(function(){//這裡忽略所有實現})();

     通過這個簡單的匿名函數,我們來剖析它是怎麼顯現執行的?那麼出現在眼前最多的就是“()”,對的就是“()”在作怪。小括弧能把我們的運算式組合分塊,並且每一塊,也就是每一對小括弧,都有一個返回值。這個返回值實際上也就是小括弧中運算式的返回值。所以當我們用一對小括弧把匿名函數括起來的時候,實際上小括弧對返回的就是一個匿名函數的Function對象。因此,小括弧對加上匿名函數就如同有名字的函數般被我們取得它的引用位置了。所以如果在這個引用變數後面再加上參數列表,就會實現普通函數的調用形式。

二、幹什嗎?

        那麼它是用來解決什麼問題的呢?這樣寫的目的是什嗎?由於JavaScript並不是物件導向的,所以它不支援封裝。但是在不支援封裝的語言裡同樣可以實現封裝,而實現的方法就是匿名函數。可見它的目的就是為封裝而生。

        是否記得《Javascript的一種模組模式》中的第一句話就是“全域變數是魔鬼”。配合var關鍵字,匿名函數可以有效保證在頁面上寫入Javascript,而不會造成全域變數的汙染。這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。  

三、怎麼用?

        還記得上一篇部落格嗎?用Ajax來實現判斷使用者是否存在?那裡用了回調的方法來得到Ajax引擎返回的資料,那麼現在我們就用匿名函數的方法來實現同樣的操作(這裡只看JS的代碼部分,其它不變):

function validate(field){if (trim(document.getElementById("userId").value).length != 0) {var xmlHttp = null;//表示當前瀏覽器不是ie,如ns,firefoxif(window.XMLHttpRequest) {xmlHttp = new XMLHttpRequest();} else if (window.ActiveXObject) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}//解決緩衝方法,用毫秒來加時間戳記var url="user_validate.jsp?userId=" + trim(document.getElementById("userId").value)+ "&time=" +new Date().getTime();//佈建要求方式用GET,佈建要求的URL,設定非同步提交xmlHttp.open("GET",url,true);//將方法地址複製給onreadystatechange屬性//類似於電話號碼,這裡採用了匿名函數的方法來實現回調功能xmlHttp.onreadystatechange=function(){//Ajax引擎狀態為成功if(xmlHttp.readyState ==4){//http協議狀態為成功if(xmlHttp.status ==200){//alert("請求成功!")//判斷如果為空白,將紅字span去掉if (trim(xmlHttp.responseText) != ""){document.getElementById("spanUserId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>"}else{document.getElementById("spanUserId").innerHTML = "";}}else{alert("請求失敗,錯誤碼=" +xmlHttp.status);}}}//將設定的資訊發送到Ajax引擎xmlHttp.send(null);}else{document.getElementById("spanUserId").innerHTML = "";}} 

         當然匿名函數的實現方法還有很多種,在這裡就不一一例舉了,希望在今後的學習中得到更多的實踐。

四、對比

         通過對比兩種Ajax對判斷使用者是否存在的實現,我們可以看出採用匿名函數可以將之前的三個函數整理成一個函數,這樣的實現更加簡單,並且可以提高效率。

五、總結

         通過對匿名函數的學習,讓我明白了每個知識點之間都有千絲萬縷的聯絡。所以在今後的學習中不要放過任何不明白,不懂的名詞。

Ajax實踐之匿名函數判斷使用者是否存在

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.