小方的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"  回復  更多評論
            

          主站蜘蛛池模板: 中西区| 张家界市| 中方县| 拉孜县| 安多县| 临沂市| 水富县| 永宁县| 南开区| 长子县| 嘉峪关市| 略阳县| 涪陵区| 抚远县| 慈溪市| 承德县| 益阳市| 鲜城| 庆城县| 淮阳县| 渭南市| 黎川县| 富宁县| 三明市| 临湘市| 保德县| 利津县| 北碚区| 山阳县| 伽师县| 隆尧县| 交城县| 宿松县| 胶南市| 二连浩特市| 宜川县| 昌邑市| 怀安县| 临泽县| 罗田县| 佛山市|