美麗涵涵童裝店--說我博客名字,給你們打折!
          隨筆 - 82  文章 - 266  trackbacks - 0
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456


          點擊這里給楊愛友發消息
          美麗涵涵童裝店
          說我博客名字,給你們打折!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章檔案

          好友的BLOG

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          [轉載于 http://www.aspxhome.com/javascript/start/20078/148126.htm,并做了少量修改]

          this指針是面向對象程序設計中的一項重要概念,它表示當前運行的對象。在實現對象的方法時,可以使用this指針來獲得該對象自身的引用。

            和其他面向對象的語言不同,JavaScript中的this指針是一個動態的變量,一個方法內的this指針并不是始終指向定義該方法的對象的,在上一節講函數的apply和call方法時已經有過這樣的例子。為了方便理解,再來看下面的例子:

          <script language="JavaScript" type="text/javascript">  
          <!--  
          //創建兩個空對象  
          var obj1=new Object();  
          var obj2=new Object();  
          //給兩個對象都添加屬性p,并分別等于1和2  
          obj1.p=1;  
          obj2.p=2;  
          //給obj1添加方法,用于顯示p的值  
          obj1.getP=function(){  
                alert(this.p); //表面上this指針指向的是obj1  
          }  
          //調用obj1的getP方法  
          obj1.getP();  
          //使obj2的getP方法等于obj1的getP方法  
          obj2.getP=obj1.getP;  
          //調用obj2的getP方法  
          obj2.getP();  
          //-->  
          </script>
            從代碼的執行結果看,分別彈出對話框顯示1和2。由此可見,getP函數僅定義了一次,在不同的場合運行,顯示了不同的運行結果,這是有this指針的變化所決定的。在obj1的getP方法中,this就指向了obj1對象,而在obj2的getP方法中,this就指向了obj2對象,并通過this指針引用到了兩個對象都具有的屬性p。

            由此可見,JavaScript中的this指針是一個動態變化的變量,它表明了當前運行該函數的對象。由this指針的性質,也可以更好的理解JavaScript中對象的本質:一個對象就是由一個或多個屬性(方法)組成的集合。每個集合元素不是僅能屬于一個集合,而是可以動態的屬于多個集合。這樣,一個方法(集合元素)由誰調用,this指針就指向誰。實際上,前面介紹的apply方法和call方法都是通過強制改變this指針的值來實現的,使this指針指向參數所指定的對象,從而達到將一個對象的方法作為另一個對象的方法運行。

          每個對象集合的元素(即屬性或方法)也是一個獨立的部分,全局函數和作為一個對象方法定義的函數之間沒有任何區別,因為可以把全局函數和變量看作為window對象的方法和屬性。也可以使用new操作符來操作一個對象的方法來返回一個對象,這樣一個對象的方法也就可以定義為類的形式,其中的this指針則會指向新創建的對象。在后面可以看到,這時對象名可以起到一個命名空間的作用,這是使用JavaScript進行面向對象程序設計的一個技巧。例如:

          代碼片段

          var namespace1=new Object();  
          namespace1.class1=function(){  
               //初始化對象的代碼  
          }  
          var obj1=new namespace1.class1();  

            這里就可以把namespace1看成一個命名空間。  mootools中的FX就是一個命名空間。

          posted on 2008-08-06 22:33 楊愛友 閱讀(744) 評論(0)  編輯  收藏 所屬分類: java相關技術
          美麗涵涵童裝店
          親,說我博客名字,給你們打折!
          主站蜘蛛池模板: 綦江县| 阆中市| 沈阳市| 藁城市| 德惠市| 蕲春县| 安吉县| 玉溪市| 隆林| 巴楚县| 甘谷县| 宝丰县| 陆川县| 盐边县| 隆子县| 贵南县| 拜泉县| 砀山县| 泗洪县| 文水县| 青冈县| 铁岭县| 伊春市| 合作市| 芒康县| 陈巴尔虎旗| 土默特左旗| 外汇| 奉节县| 阿拉善盟| 营山县| 车致| 枝江市| 壤塘县| 杭锦后旗| 文登市| 兴仁县| 呼玛县| 竹溪县| 东源县| 文昌市|