邊城愚人

          如果我不在邊城,我一定是在前往邊城的路上。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            31 隨筆 :: 0 文章 :: 96 評論 :: 0 Trackbacks
          ??? 實現JavaScript繼承的最簡單的方式是call方法(或者apply方法)及原型鏈方法,但這兩種方法都有缺陷,而其混合體就是很好的繼承實現方式。下面舉例說明:
          function?Animal(age){
          ????
          this.age?=?age;
          }

          Animal.prototype.sayAge?
          =?function(){
          ????window.alert(
          "My?age?is?"+this.age+"!");
          };

          function?Dog(age,name){
          ????Animal.call(
          this,age);
          ????
          this.name?=?name;
          }
          Dog.prototype?
          =?new?Animal();
          Dog.prototype.sayName?
          =?function(){
          ????window.alert(
          "I?am?a?"+this.name+"!");
          };

          var?dog?=?new?Dog(15,"dog");
          dog.sayName();
          dog.sayAge();
          ??? 對于類Animal來說,它有一個字段屬性age及函數屬性sayAge,sayAge方法的定義采用的是原型方式。Dog類要繼承Animal,其字段屬性除了age外還有name,通過Animal.call(this,age);可以實現Dog繼承Animal的字段屬性age并將其初始化了。call方法的第一個參數為繼承的類的this指針,第二個參數為Animal類的構造函數的參數。實際上,只是通過call方法就可以實現繼承,但唯一的要求是父類的函數屬性要在構造函數中定義,這對于這里的函數屬性使用原型方式定義來說就不適合了(采用原型方式定義函數屬性比在構造函數內定義更直觀一些)。要想繼承Animal的原型方式定義的函數屬性,需要的語句就是“Dog.prototype?=?new?Animal();”。而Dog類中的sayName()函數則是其自身的函數屬性了。
          ??? 除了這個最經典的實現繼承的方式外,目前還有一些免費的庫可供使用。但想到形形色色的庫,頭就大了,有時間有必要時再研究吧!
          posted on 2007-04-08 21:11 kafka0102 閱讀(1483) 評論(0)  編輯  收藏 所屬分類: Ajax

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 台南市| 枞阳县| 邯郸县| 益阳市| 新干县| 桃园县| 保德县| 区。| 灯塔市| 齐齐哈尔市| 阜阳市| 南召县| 丹江口市| 崇仁县| 青岛市| 宝鸡市| 新野县| 日土县| 玉环县| 阿勒泰市| 宝山区| 澜沧| 十堰市| 白玉县| 鄂温| 太和县| 华蓥市| 三原县| 鸡泽县| 通辽市| 漯河市| 宁化县| 孟州市| 荥阳市| 凤阳县| 花莲县| 云龙县| 当雄县| 新乡市| 靖安县| 乌兰县|