隨筆-9  評論-168  文章-266  trackbacks-0
          JS 創建類---混合的構造函數/原型方式
          prototype:原型.此對象的所有實例共享原型定義的數據和(對象)引用.一般用于防止重復創建函數,浪費內存.
          原型中定義的所有函數和引用的對象都只創建一次;構造函數中的方法則會隨著實例的創建重復創建(如果有對象或方法的話).
          不管在原型中還是構造函數中,屬性(值)都不共享.
          創建類的最好方式是用構造函數定義屬性,用原型定義方法。
          這種方式同樣適用于繼承機制,用對象冒充繼承構造函數的屬性,用原型鏈繼承 prototype 對象的方法。
          //構造函數
          function Car(sColor,iDoors,iMpg) {
            this.color = sColor; //定義屬性
            this.doors = iDoors; //定義屬性
            this.mpg = iMpg;     //定義屬性
            this.drivers = new Array("Mike","John");//定義數組對象.每個實例創建一個單獨的對象
          }
          //公共方法(共享),屬性不共享.
          Car.prototype={
            value:1,                        //屬性不共享
            objs:new Array("A","B"),        //對象共享引用
            showColor : function() {        //方法共享引用.
              alert(this.color);
            }
          };
          var oCar1 = new Car("red",4,23);
          var oCar2 = new Car("blue",3,25);
          oCar1.drivers.push("Bill");       //構造方法中的對象都是各個獨立的.
          oCar1.value=2;                     //屬性不共享.
          oCar1.objs.push('C');             //原型中的對象都是共享引用的.
          document.write(oCar1.drivers + "<br/>" );
            //Mike1,John,Bill
          oCar1.showColor();                         //red
          document.write(oCar2.objs + "<br/>" );
               //A,B          oCar1:A,B,C
          document.write( "<br/>" +oCar2.value);     //1
          document.write( "<br/>" +oCar2.drivers);   //Mike1,John
          posted on 2012-08-03 16:50 紫蝶∏飛揚↗ 閱讀(982) 評論(0)  編輯  收藏 所屬分類: div+css+js代碼
          主站蜘蛛池模板: 太白县| 昌邑市| 健康| 满洲里市| 平乡县| 永仁县| 呼伦贝尔市| 佛冈县| 灵璧县| 类乌齐县| 东阳市| 班戈县| 西和县| 克拉玛依市| 八宿县| 博白县| 北流市| 长葛市| 图木舒克市| 米脂县| 同德县| 揭阳市| 遂川县| 涞水县| 长寿区| 江山市| 沙湾县| 商水县| 南宫市| 长葛市| 石景山区| 万宁市| 巴林左旗| 子长县| 同江市| 平顶山市| 恭城| 台安县| 莆田市| 武夷山市| 敦煌市|