隨筆 - 4  文章 - 10  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          文章出自:http://www.aygfsteel.com/BlueDavy/archive/2006/03/02/33285.html
          介紹這方面的文章也有一些,我這里打算以一個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中執(zhí)行代碼會發(fā)現(xiàn)點擊按鈕后彈出的提示的值為"測試",按照java的思想去看的話我們會覺得這是很奇怪的事,因為按照java執(zhí)行的話這個時候一定是彈出"TestThis"...
          那么為什么會發(fā)生這樣的狀況呢,其實就是在將按鈕的onclick事件綁定到clickButton造成的,當事件發(fā)生時候當前的對象為button,而不是TestThis,自然這個時候的this也就是button了...
          有些時候我們是不希望這樣的,在擁有prototype的情況下我們可以用它提供的bind來解決,將上面的綁定按鈕的onclick事件部分的代碼改為:
          $(btn).onclick=this.clickButton.bind(this);
          再次執(zhí)行后會發(fā)現(xiàn)這個時候點擊按鈕彈出的提示的值就變?yōu)?TestThis"了,呵呵,其實就是prototype幫忙將這個時候的參數(shù)進行了重新的綁定..
          bind和extend是prototype中兩個非常重要的方法,去看prototype.js就會發(fā)現(xiàn),里面很多地方都用到了Object.extend和Function.prototype.bind這兩個函數(shù)...
          bind可以起到的作用就象我上面說的..
          extend起到的作用則為繼承和擴展,^_^
          posted on 2007-08-15 21:19 冬天出走的豬 閱讀(181) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 上饶市| 祁东县| 洛扎县| 丹凤县| 普格县| 扶沟县| 文昌市| 濮阳县| 那坡县| 南宁市| 安岳县| 彭水| 连城县| 册亨县| 留坝县| 莎车县| 宿迁市| 鄄城县| 无棣县| 恩平市| 常熟市| 北票市| 康乐县| 屏边| 福建省| 健康| 合川市| 信丰县| 石林| 黑河市| 怀仁县| 原阳县| 新和县| 望谟县| 哈密市| 云安县| 柳江县| 儋州市| 弥勒县| 柞水县| 大理市|