小方的Java博客

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
          選自《Professional Javascript For Web Developers》

          其它方式:工廠方式,構造函數方式,原型方式都各有各的大缺陷,這里就不一一介紹了,想了解的可以去看一下這本著作的第3章節。

          1. 混合構造函數/原型方式

          function ?Car(sColor,?iDoors,?iMpg)?{
          ??
          this .color? = ?sColor;
          ??
          this .doors? = ?iDoors;
          ??
          this .mpg? = ?iMpg;
          ??
          this .drivers? = ? new ?Array(“Mike”,?“Sue”);
          }

          Car.prototype.showColor?
          = ? function ?()?{
          ??alert(
          this .color);
          };

          var ?oCar1? = ? new ?Car(“red”,? 4 ,? 23 );
          var ?oCar2? = ? new ?Car(“blue”,? 3 ,? 25 );

          oCar1.drivers.push(“Matt”);

          alert(oCar1.drivers);?
          // outputs?“Mike,Sue,Matt”
          alert(oCar2.drivers);? // outputs?“Mike,Sue”

          優點:具有其它方式的優點而沒有其它方式的缺點
          不足:封裝性欠缺

          2 . 動態原型方式

          function ?Car(sColor,?iDoors,?iMpg)? {
          ??
          this .color? = ?sColor;
          ??
          this .doors? = ?iDoors;
          ??
          this .mpg? = ?iMpg;
          ??
          this .drivers? = ? new ?Array(“Mike”,?“Sue”);

          ??
          if ?( typeof ?Car._initialized? == ?“undefined”)? {
          ????Car.prototype.showColor?
          = ? function ?()? {
          ??????alert(
          this .color);
          ????}
          ;

          ????Car._initialized?
          = ? true ;
          ??}

          }


          優點:封裝性比上一個方式更好
          不足:就是看上去奇怪一點,呵呵


          總之,以上2種方式是目前最廣泛使用的,盡量使用它們避免不必要的問題。

          posted on 2007-02-11 17:34 方佳瑋 閱讀(6167) 評論(1)  編輯  收藏 所屬分類: AJAX

          評論

          # re: [整理]JavaScript最流行的2種定義類的方式 2007-02-11 20:46 BeanSoft
          // Method 1: flat array style quick object define
          var myObject = {
          username : "beansoft",
          age : 24,
          test : function() {alert(this.age);}
          };

          // Method 2: using Object
          var myObject = new Object();
          myObject.username = "beansoft";
          myObject.age = 24;

          // Method 3: using constructor

          function MyObject(username, age) {
          this.username = username;
          this.age = age;
          this.test = function() {alert(this.age);};
          }

          var myObject = new MyObject("beansoft", 24);

          // Method 4,5 如樓上文章所言既是

          // Using: myObject.username, myObject["username"], myObject[0]
          myObject.test();// Will display alert window, value is age
          myObject.username = "Hello";// Will asign the username property to "Hello"  回復  更多評論
            

          主站蜘蛛池模板: 宜城市| 梁河县| 宜黄县| 龙游县| 奉节县| 普安县| 格尔木市| 邢台市| 手游| 泊头市| 保亭| 博罗县| 兴山县| 宜丰县| 建水县| 分宜县| 天柱县| 锦州市| 耒阳市| 文化| 延津县| 阳山县| 科尔| 昌平区| 泗阳县| 开封市| 三穗县| 清镇市| 中卫市| 乌鲁木齐市| 泗阳县| 西青区| 若羌县| 务川| 永德县| 韩城市| 永州市| 将乐县| 土默特左旗| 四子王旗| 佛学|