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 閱讀(2071) 評論(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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 寿宁县| 琼海市| 稷山县| 土默特右旗| 湘乡市| 佳木斯市| 建瓯市| 宜兰县| 安多县| 焦作市| 潢川县| 年辖:市辖区| 平原县| 昌都县| 永兴县| 略阳县| 昌邑市| 图们市| 金堂县| 东乡| 钟祥市| 内黄县| 大石桥市| 钟山县| 玉龙| 孟村| 庄浪县| 腾冲县| 大方县| 和平县| 平原县| 大同县| 晋宁县| 商城县| 汽车| 江源县| 漳州市| 离岛区| 金坛市| 大足县| 三河市|