組合繼承有時候也叫偽經典繼承,指的是將原型鏈和借用構造函數(shù)技術組合到一塊,從而發(fā)揮二者之長的一種繼承模式,其背后的思路是使用原型鏈實現(xiàn)對原型屬性和方法的繼承,而通過借用構造函數(shù)來實現(xiàn)對實例屬性的繼承。這樣既通過在原型上定義方法實現(xiàn)了函數(shù)復用,又能保證每個實例都有它的自己的屬性。
我們提供的服務有:網站設計制作、成都做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、玉門ssl等。為上千企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的玉門網站制作公司
function SuperType(name){ this.name=name; this.colors=["red","blue","green"]; } SuperType.prototype.sayName=function(){ console.log(this.name); } function SubType(name,age){ SuperType.call(this,name); this.age=age; } SubType.prototype=new SuperType(); SubType.prototype.constructor=SubType; SubType.prototype.sayAge=function(){ console.log(this.age); } var instance1=new SubType("zxf",24); instance1.colors.push("black"); console.log(instance1.colors);//["red","blue","green","black"] instance1.sayName();//"zxf" instance1.sayAge();//24 var instance2=new SubType("jay",36); console.log(instance2.colors);//["red","blue","green"] instance2.sayName();//"jay" instance2.sayAge();//36
在這個例子中,supertype構造函數(shù)定義了兩個屬性,name和colors。supertype的原型定義了一個方法sayname()。subtype構造函數(shù)調用supertype時傳入了name參數(shù),緊接著又定義了它自己的屬性age。然后將supertype的實例賦值給subtype的原型,然后又在該新原型上定義了方法sayage()。這樣一來,就可以讓兩個不同的subtype實例既可以擁有屬性--包括colors屬性,又可以使用相同的方法。
組合式繼承缺點是:調用了兩次supertype構造函數(shù),一次在賦值subtype的原型時,一次在實例化子類時call調用,這次調用會屏蔽原型中的兩個同名屬性。
參考書籍:Javascript高級程序設計(第3版);
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持創(chuàng)新互聯(lián)!