JavaScript 繼承 組合繼承

2021-08-13 22:43:55 字數 961 閱讀 9181

繼承---組合繼承

組合繼承也叫做偽經典繼承,指的是將原型鏈借用建構函式的技術組合到一塊,從而發揮二者之長的一種繼承模式。

組合繼承的基本思路是使用原型鏈實現對原型屬性和和方法的繼承,而通過借用建構函式來實現對例項屬性的繼承。

組合繼承通過在原型上定義方法實現了函式復用,又能夠保證每個例項都有它自己的屬性。如例1所示:

例1:

function aaa(name)

aaa.prototype.getname=function()

function bbb(name,age)

bbb.prototype=new aaa();

bbb.prototype.constructor=bbb;//更改bbb的原型中的constructor的指向

bbb.prototype.getage=function()

var psn1=new bbb('nicholas',18);

psn1.colors.push('black');

alert(psn1.colors);

//red,green,blue,black

psn1.getname();//nicholas

psn1.getage();//18

var psn2=new bbb("joe",35);

alert(psn2.colors);//red,green,blue

psn2.getage();//35

psn2.getname();//joe

組合繼承避免了原型鏈和建構函式的缺陷,稱為js中常用的繼承模式。而且,instanceof 和isprototypeof( )也能夠用

於識別基於組合繼承建立的物件。

javascript的組合繼承

需要先說明一點,這篇部落格是基於高程來寫的,這裡只是加上自己的理解而已。function supertype supertype.prototype.sayname function function subtype subtype.prototype new supertype var insta...

python繼承 python 繼承與多重繼承

當然,如果不支援python繼承,語言特性就不值得稱為 類 派生類定義的語法如下所示 名稱 baseclassname 必須定義於包含派生類定義的作用域中。也允許用其他任意表示式代替基類名稱所在的位置。這有時也可能會用得上,例如,當基類定義在另乙個模組中的時候 class derivedclassn...

python 多繼承 python 繼承之多繼承

class baserequest pass class requesthandler baserequest def serve forever self print requesthandler.serve forever self.process request def process req...