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,如需轉載請自行聯系原作者