隨筆-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 閱讀(1013) 評論(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();  回復  更多評論
            
          主站蜘蛛池模板: 永嘉县| 都昌县| 卢湾区| 赤水市| 北安市| 台中市| 定远县| 寿光市| 府谷县| 信丰县| 古丈县| 马尔康县| 湟中县| 武山县| 满洲里市| 鹤峰县| 水城县| 辽宁省| 霸州市| 科尔| 海南省| 长泰县| 华坪县| 南京市| 浑源县| 南部县| 鄂尔多斯市| 南宫市| 田阳县| 翁源县| 铜山县| 开江县| 安达市| 万盛区| 同仁县| 同心县| 皋兰县| 克拉玛依市| 上杭县| 长春市| 灯塔市|