美麗涵涵童裝店--說我博客名字,給你們打折!
          隨筆 - 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 楊愛友 閱讀(745) 評論(0)  編輯  收藏 所屬分類: java相關技術
          美麗涵涵童裝店
          親,說我博客名字,給你們打折!
          主站蜘蛛池模板: 榆中县| 沧源| 鹤岗市| 元阳县| 宁明县| 德惠市| 普安县| 巨鹿县| 淳安县| 东源县| 佛坪县| 江源县| 徐汇区| 东平县| 平顶山市| 呈贡县| 大埔区| 体育| 甘肃省| 化州市| 华宁县| 进贤县| 通化市| 图们市| 银川市| 青海省| 大荔县| 禹州市| 马公市| 汝城县| 出国| SHOW| 白朗县| 新巴尔虎左旗| 晋江市| 九江市| 冷水江市| 台湾省| 张北县| 偏关县| 南京市|