繼承---組合繼承
組合繼承也叫做偽經典繼承,指的是將原型鏈和借用建構函式的技術組合到一塊,從而發揮二者之長的一種繼承模式。
組合繼承的基本思路是使用原型鏈實現對原型屬性和和方法的繼承,而通過借用建構函式來實現對例項屬性的繼承。
組合繼承通過在原型上定義方法實現了函式復用,又能夠保證每個例項都有它自己的屬性。如例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...