<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Javascript基礎知識之this篇

    介紹這方面的文章也有一些,我這里打算以一個demo來說明一下,也是基于prototype進行編寫,javascript中的this看起來會和java中的this有些不同。
    一個簡單的測試,為了綁定事件到一個按鈕上:
    <script src="prototype.js"></script>
    <input type=button name=btnTest value=測試>
    <script>
        
        
    var TestThis=Class.create();

        TestThis.prototype
    ={
        
            initialize:
    function(btn){
                
    this.value="TestThis";
                $(btn).onclick
    =this.clickButton;
            }


            clickButton:
    function(){
                alert(
    this.value);
            }


        }


        
    new TestThis("btnTest");

    </script>
    在IE中執行代碼會發現點擊按鈕后彈出的提示的值為"測試",按照java的思想去看的話我們會覺得這是很奇怪的事,因為按照java執行的話這個時候一定是彈出"TestThis"...
    那么為什么會發生這樣的狀況呢,其實就是在將按鈕的onclick事件綁定到clickButton造成的,當事件發生時候當前的對象為button,而不是TestThis,自然這個時候的this也就是button了...
    有些時候我們是不希望這樣的,在擁有prototype的情況下我們可以用它提供的bind來解決,將上面的綁定按鈕的onclick事件部分的代碼改為:
    $(btn).onclick=this.clickButton.bind(this);
    再次執行后會發現這個時候點擊按鈕彈出的提示的值就變為"TestThis"了,呵呵,其實就是prototype幫忙將這個時候的參數進行了重新的綁定..
    bind和extend是prototype中兩個非常重要的方法,去看prototype.js就會發現,里面很多地方都用到了Object.extend和Function.prototype.bind這兩個函數...
    bind可以起到的作用就象我上面說的..
    extend起到的作用則為繼承和擴展,^_^

    posted on 2006-03-02 20:25 BlueDavy 閱讀(2070) 評論(1)  編輯  收藏 所屬分類: Javascript

    評論

    # re: Javascript基礎知識之this篇 2006-04-05 23:11 JC

    我今天寫用JS的Prototype機制也遇到同樣的問題,這樣就可以了,
    this.sbutton.clickEventSender = this;
    this.sbutton.onclick = function(){
    this.clickEventSender.show();
    }

    不過使用prototype.js更為幽雅 :)  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲美女精品国产精品| 国产亚洲精品自在线观看| 青柠影视在线观看免费高清 | 亚洲a∨无码男人的天堂| 内射无码专区久久亚洲| 在线a级毛片免费视频| 99re6免费视频| 在线播放免费人成毛片乱码| 国产V片在线播放免费无码| 亚洲Av永久无码精品一区二区 | 亚洲精品黄色视频在线观看免费资源| 亚洲熟妇少妇任你躁在线观看| 久久亚洲中文字幕精品有坂深雪| 自拍偷自拍亚洲精品被多人伦好爽| 青青草免费在线视频| 成年女人喷潮毛片免费播放| 9久9久女女免费精品视频在线观看| 91免费国产精品| 在线观看免费人成视频色9| 久久精品免费一区二区喷潮| 天天看免费高清影视| 亚洲婷婷国产精品电影人久久| 亚洲阿v天堂在线2017免费| 久久乐国产精品亚洲综合| 亚洲国产精品一区二区第一页| 亚洲成在人天堂一区二区| 456亚洲人成影院在线观| 在线观看免费亚洲| 美女被免费网站91色| 91在线老王精品免费播放| 午夜无遮挡羞羞漫画免费| 亚洲欧洲成人精品香蕉网| 久久久久亚洲av无码专区导航| 国产精品亚洲午夜一区二区三区| 成年免费大片黄在线观看com| 久久精品免费观看| 免费无码一区二区三区蜜桃大| 在线a亚洲v天堂网2019无码| 亚洲欧美日韩中文无线码| 午夜不卡久久精品无码免费 | 亚洲一卡2卡3卡4卡5卡6卡 |