隨筆-314  評論-209  文章-0  trackbacks-0

          研究發現:屬性(變量)可分為三類(對象屬性、全局變量和局部變量)
          對象屬性:聲明時以“this.”開頭,只能被“類的實例”即對象所調用,不能被“類內部(對外不對內)”調用;全局變量:聲明時直接以變量名開頭,可以任意調用(對內對外);局部變量:只能被

          “類內部(對內不對外)”調用。

           

          JS函數的聲明與訪問原理

          <script type="text/javascript">  
          //類  
          var testClass = function(){  
            //對象屬性(對外不對內,類調用)  
            this.age ="25";  
            //全局變量(對內對外)  
            name="jack";  
            //局部變量(對內不對外)
            var address = "beijing";
              
            //全局函數(對內對外)  
            add = function(a,b){  
              //可訪問:全局變量和局部變量  
              multiply(a,b);  
              return a+b;  
            }  
            //實例函數(由類的對象調用)  
            this.minus = function(a,b){  
              //可以訪問:對象屬性、全局變量和局部變量  
              return a-b;  
            }  
            //局部函數(內部直接調用)  
            var multiply = function(a,b){  
              //只能訪問:全局變量和局部變量  
              return a*b;  
            }  
          }  
           
           
          //類函數(由類名直接調用)  
          testClass.talk= function(){  
            //只能訪問:全局變量和全局函數  
            this.what = function(){  
              alert("What can we talk about?");  
              about();  
            }  
              
            var about = function(){  
              alert("about name:"+name);
              alert("about add(1,1):"+add(1,1));
            }  
          }  
           
           
          //原型函數(由類的對象調用)  
          testClass.prototype.walk = function(){  
            //只能訪問:全局變量和全局函數  
            this.where = function(){  
              alert("Where can we go?");
              go();  
            }  
              
            var go = function(){  
              alert("go name:"+name); 
              alert("go add(1,1):"+add(1,1));
            }  
          }  
          </script> 


          下面看看如何調用:

          <script type="text/javascript">  
          //獲取一個cbs類的實例  
          var cbs= new testClass();  
          //調用類的對象屬性age  
          alert("age:"+cbs.age);  
           
          //獲取類函數talk的實例  
          var talk = new testClass.talk();
          //調用類函數的實例函數  
          talk.what();  
           
          //獲取原型函數walk的實例  
          var walk = new cbs.walk();  
          //調用原型函數的實例函數  
          walk.where();  
          </script> 

          posted on 2011-07-09 11:34 xzc 閱讀(1012) 評論(2)  編輯  收藏 所屬分類: XMLWeb

          評論:
          # re: js 高級編程[未登錄] 2011-12-22 09:36 | xzc
          function myClass(id, name)
          {
          this.ID = id;
          this.Name = name;
          }

          myClass.prototype =
          {
          showMessage: function()
          {
          alert("ID: " + this.ID + ", Name: " + this.Name);
          },
          showMessage2: function()
          {
          alert("Method2");
          }
          }

          var obj1 = new myClass(1, "johnson");
          obj1.showMessage();
          obj1.Name="John";
          obj1.showMessage();
          var obj2 = new myClass(2, "Amanda");
          obj2.showMessage();
            回復  更多評論
            
          # re: js 高級編程[未登錄] 2011-12-22 09:36 | xzc
          function subClass(){ }
          subClass.prototype =
          {
          Name: "sub"
          }

          function myClass()
          {
          //構造函數
          }

          myClass.prototype =
          {
          ID: 1,
          Name: "johnson",
          SubObj: new subClass(),
          showMessage: function()
          {
          alert("ID: " + this.ID + ", Name: " + this.Name + "SubObj.Name:" + this.SubObj.Name);
          }
          }

          var obj1 = new myClass();
          obj1.SubObj.Name = "XXX";
          obj1.showMessage();
          var obj2 = new myClass();
          obj2.showMessage();  回復  更多評論
            
          主站蜘蛛池模板: 南投市| 乃东县| 安龙县| 建昌县| 资兴市| 井陉县| 南陵县| 焦作市| 宁德市| 永德县| 那曲县| 楚雄市| 本溪| 正蓝旗| 呼伦贝尔市| 呼图壁县| 杂多县| 仁怀市| 平江县| 南安市| 曲阳县| 昆明市| 濮阳市| 浮山县| 南岸区| 二连浩特市| 满城县| 无棣县| 陇南市| 平原县| 深水埗区| 遂宁市| 伽师县| 安仁县| 富源县| 高台县| 康平县| 长沙县| 郧西县| 鹰潭市| 长垣县|