js常用的繼承--組合式繼承

組合繼承有時候也叫偽經(jīng)典繼承,指的是將原型鏈和借用構(gòu)造函數(shù)技術(shù)組合到一塊,從而發(fā)揮二者之長的一種繼承模式,其背后的思路是使用原型鏈實(shí)現(xiàn)對原型屬性和方法的繼承,而通過借用構(gòu)造函數(shù)來實(shí)現(xiàn)對實(shí)例屬性的繼承。這樣既通過在原型上定義方法實(shí)現(xiàn)了函數(shù)復(fù)用,又能保證每個實(shí)例都有它的自己的屬性。

我們提供的服務(wù)有:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、玉門ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的玉門網(wǎng)站制作公司

 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構(gòu)造函數(shù)定義了兩個屬性,name和colors。supertype的原型定義了一個方法sayname()。subtype構(gòu)造函數(shù)調(diào)用supertype時傳入了name參數(shù),緊接著又定義了它自己的屬性age。然后將supertype的實(shí)例賦值給subtype的原型,然后又在該新原型上定義了方法sayage()。這樣一來,就可以讓兩個不同的subtype實(shí)例既可以擁有屬性--包括colors屬性,又可以使用相同的方法。

組合式繼承缺點(diǎn)是:調(diào)用了兩次supertype構(gòu)造函數(shù),一次在賦值subtype的原型時,一次在實(shí)例化子類時call調(diào)用,這次調(diào)用會屏蔽原型中的兩個同名屬性。

參考書籍:Javascript高級程序設(shè)計(第3版);

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持創(chuàng)新互聯(lián)!

分享標(biāo)題:js常用的繼承--組合式繼承
文章地址:http://muchs.cn/article42/pdghec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、響應(yīng)式網(wǎng)站手機(jī)網(wǎng)站建設(shè)域名注冊、Google網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司