讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議97:推薦使用混合繼承 >

建議97:推薦使用混合繼承

混合繼承是指把多種繼承方法結合在一起使用,從而發揮各自優勢,揚長避短,以實現各種複雜的應用。其中最常見的形式是把類繼承與原型繼承混合使用,以解決類繼承中存在的問題。下面比較一下類繼承、原型繼承、實例繼承、複製繼承和克隆繼承之間的不同,見表4.1。

類繼承與原型繼承是兩種截然不同的繼承模式,它們生成的對象的行為方式也是不同的。面向對象的開發人員對於類繼承比較熟悉,幾乎所有使用面向對象的JavaScript應用都用到了這種繼承模式,但是,因為JavaScript中的類繼承僅僅是對真正基於類繼承的一種模仿,所以深入理解JavaScript的開發人員應該懂得原型繼承的工作機制。

原型繼承更能節約內存。原型鏈讀取成員的方式使得所有克隆出來的對象都共享一個實例,只有在直接設置了某個克隆出來的對象的屬性和方法時,情況才會有所變化。而在類繼承方式中,創建的每一個對像在內存中都有自己的一套屬性和方法副本。原型繼承比類繼承顯得更為簡單。


function A(x,y){//構造函數A

this.x=x;

this.y=y;

}

A.prototype.add=function{

return this.x+this.y;

}

function B(x,y){

A.call(this,x,y);//類繼承實現

}

B.prototype=new A;//原型繼承實現

var b=new B(10,20);

alert(b.x);//10

alert(b.y);//20

alert(b.add);//30


上面的示例把原型繼承和類繼承混用在一起,從而實現了一種比較完善的繼承機制。