關於Javascript的一些心得與記憶

來源:互聯網
上載者:User

      Javascript 一種文法寬鬆而表現豐富的語言,讓不同的程式員有不同的寫作風格;又由於其在不同的瀏覽器中表現並不一志,再加上調試的不便,讓它成為了WEB開發中比較難的一塊。
      說js我們不得不說說json,至於json是什麼我就不談了,我要談的是其中的一個特性,那就是{}。在js中,我們可以像這樣來聲明一個對象 var user = {username: "Sander", password: "123456"}; 之後我們就可以像其它語言中使用類一樣來使用這個user對象。 如: user.username 得到折就是 Sander 這個字串。從這個例子我們再擴充一下,例如: var user = {username: "Sander", password: "123456", login:function(username, password){}} 。從這個例子中我們可以看到user的login屬性是一個函數,這是js相對於其它語言寬鬆的地方,屬性可以是函數。因為這樣,我們就可以用user.login("abc", "ooo");這樣的形式來調用這個函數,相當於其它語言中調用類的方法一樣,是不是比較爽呢?這就是各大JS架構常用的寫法,只要我們明白了其中的原理,那看別人的代碼的時候就不會感覺不知所謂了。還有一種比較常用的寫法就是我們先寫一個函數,再通過prototype給它擴充屬性(這裡說的prototype不是指比較有名的JS類Prototype,而是js相對於其它語言來說比較有個性的一個特別的功能)。例如:var a = function(){}; a.prototype.sayHello = function(){alert("Hello, every one.");}。這樣子寫出來的a就有點像其它語言裡面的類了,我們可以這樣聲明一個類:var b = new a();再通過這樣b.sayHello();來調用它的方法。
    要談JS,我們不得不說說一些所謂的事件。在DOM裡,我們給一個對象綁上事件是不能傳參數的,或者說是不能直接傳參數的。假如textBox是一個TextBoX對像,我們要給他的onChange事件附加一個函數,我們在JS代碼裡面只能這樣子寫:textBox.onChange = fun;(fun 是一個函數,並且是一個無參的函數)。在當前的fun函數裡他的this指標指向的就是textBox,我們無法取得外部的其它資訊,而這往往不是我們想要的。要改變this指標,我們就得借用像這樣的一種函數:

createDelegate = function(oThis, pFunc) {
    return function() {
        pFunc.apply(oThis, arguments);
    };
}

textBox.onChange = createDelegate(this, fun);這樣的話fun得到的this指標就是外面的this指標,不再是textBox對像(不記得這樣子說是不是正確的,因為很久沒用這種方式了)。 雖然上面說了這麼多的事件的內容,但這種寫法並不是我鼓勵大家的方式,因為這種寫法並不對各種瀏覽器通用。在IE裡的onChange在類firefox的瀏覽器裡叫change事件,沒有前面的on, 所以我一般會借用一些比較成熟的JS代碼類來協助我完成這些麻煩的事情,因為我們寫的代碼不可能針對各種各樣的瀏覽器進行測試,一般只要針對IE和Firefox進行測試,並且在一些特別的問題上借用一些別人已經測試好的代碼,我們的JS也基本上是通用的。在事件處理的方法上我比較喜歡yahoo ui裡面的addListener方法。具體的寫法是:
YAHOO.util.Event.addListener(textBox, "change", fun, "some thing you want");最後的一個參數就是我們想傳給fun的一些東東。不過fun的函數得寫成這樣的形式:var fun = function(evt, p){}, p得到的就是前面的最後一個參數傳達室來的值,而evt得到的是event對象。(今天就先說到這,有時間再補充一下。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.