ajax入門指南(二)

來源:互聯網
上載者:User
ajax入門指南,相信對ajax初學者有所協助。

javascript物件導向編程實現:
            1.類的聲明:
                function test1(){
                    this.p1 = "p1";
                    this.p2 = "p2";
                    this.f1 = function(){ alert("f1"); }
                    this.f2 = function(){ akert("f2"); }
                }
                上面的代碼聲明了兩個公有的屬性p1和p2,兩個方法f1和f2.
                如何申明私人變數呢?
                function test1(){
                    var _test = "test";
                    this.p1 = "p1";
                    this.p2 = "p2";
                    this.f1 = function(){ alert("f1"); }
                    this.f2 = function(){ akert("f2"); }
                }
                上面的代碼通過var關鍵字聲明了一個局部變數_test,其範圍是test1類定義的內部,對外不公開.
                如何申明類的靜態變數和靜態方法呢?
                test1.staticProp = "static var";
                test1.staticMethod = function(){
                    alert("static method");
                }
                還可以通過javascript中對象的prototype屬性來申明類的執行個體屬性或方法:
                test1.prototype.prop2 = "prop2";
                test2.prototype.method2 = function(){
                    alert(" this.prop2");
                }
`               利用prototype屬性,可以實現另一種類的聲明方法:
                function test(){}
                test.prototype = {
                    p1 : "p1",
                    p2 : "p2",
                    f1 : function(){
                        alert("f1");
                    }
                  }
 如何?類的繼承呢?通過複製父類的所有屬性和方法來實現子類的繼承:
                用for(....in ....)方法來實現遍曆父類所有的屬性和方法
                這裡看看我如何讓新聲明的test1類繼承test類的:
                function test1(){}//定義新聲明的test1類.
                var p;               
                for(p in test.prototype){    //遍曆父類的所有屬性和方法
                    test1.prototype[p] = test.prtotype[p];   //把父類的所有屬性和方法全部複製到新聲明的子類test1中
                }
                test1.prototype.newMethod = function(){//定義新聲明的子類test1的新方法
                    alert("new method");
                }
                其實prototype架構已經幫我們實現了這種繼承,我們來看看它是如何?的:
                Object.extend = function(destination, source){
                    for(property in source){
                        destination[property] = source[property];
                    }
                    return destination;
                 }
                Prototype架構為Object對象定義了extend方法,該方法有兩個參數destination和source,分別對應於子類和父類,所以我們前面所講的test1繼承test可以簡化代碼如下:
                 function test1(){
                    test1.prototype = Object.extend({
                        newMethod : function(){
                            alert("new method");
                        }
                    },
                    test.prototype
                );
           
                如果我們改變一下上述代碼中extend方法中的兩個參數的順序:
               function test1(){
                    test1.prototype = Object.extend(
                        test.prototype,
                        {
newMethod : function(){
                            alert("new method");
                        }
                    },
                ); 
                   可以發現,對於test1子類來說效果是相同的..
                    但是,我們進一步會發現,父類test確擁有了子類test1的新增方法,雖然這不是我們最初想要的繼承效果,但是這種方法卻使我們有了擴充項物件屬性或者方法的手段了,不是嗎?



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.