天天看點

javascript面向對象程式設計子類如何繼承父類分析

javascript面向對象程式設計子類如何繼承父類分析?

在javascript面向對象中 怎樣能使子類繼承父類?我這邊可以用兩種常見的方式!一:構造函數繼承  二:原型(prototype)模式繼承

一:構造函數模式實作繼承:假如頁面上有animal函數 和 cat函數 那麼我怎麼樣能讓cat函數繼承與animal函數呢?假如頁面有如下兩個函數!!

function animal(){

     this.special = "動物";

}

function cat(name,age){

       animal.apply(this,arguments)  //用apply或call就可以實作子類繼承父類 這樣調用父類就可以了!!!

       this.name = name;

       this.age = age;

     我們可以測試下 :

     var obj = new cat("mao",11);

      console.log(obj.special );  我們在火狐firebug下 可以看到輸出“動物” 那麼就實作了子類繼承與父類了!

二 : 第二種方式用prototype模式也可以實作子類繼承與父類!還是上面兩個函數

       cat.prototype = new animal(); //我們将cat的prototype對象指向一個animal的執行個體  它相當于完全删除了prototype 對象原先的值,然後賦予一個新值。

        cat.prototype.constructor  = cat;

        /* 原來,任何一個prototype對象都有一個constructor屬性,指向它的構造函數。也就是說,cat.prototype 這個對象的constructor屬性,是指向cat的。

我們在前一步已經删除了這個prototype對象原來的值,是以新的prototype對象沒有constructor屬性,是以我們必須手動加上去,否則後面的"繼承鍊"會出問題。

總之,這是很重要的一點,程式設計時務必要遵守。即如果替換了prototype對象, */  下面我們是測試!!!

    var obj = new cat("xiao",12);

    console.log(obj.species);

同樣的道理在火狐下 我們也可以看到輸出“動物”也實作子類繼承與父類!!

本文轉自 塗根華 51CTO部落格,原文連結:http://blog.51cto.com/tugenhua/735733,如需轉載請自行聯系原作者

繼續閱讀