最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年03月06日 17:02:57   作者:fantasy525  
本篇文章主要介紹了js常用的繼承--組合式繼承的相關(guān)知識,具有很好的參考價(jià)值。下面跟著小編一起來看下吧

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

 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

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

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

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

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評論

黄陵县| 沙坪坝区| 米易县| 城市| 湟中县| 揭东县| 湖口县| 西吉县| 本溪市| 北安市| 鹰潭市| 甘南县| 五河县| 河南省| 噶尔县| 蛟河市| 正蓝旗| 武乡县| 汝南县| 琼海市| 博罗县| 邻水| 广昌县| 中牟县| 辽宁省| 绥棱县| 通辽市| 通榆县| 中超| 成都市| 正蓝旗| 绿春县| 金川县| 前郭尔| 麟游县| 宁城县| 富平县| 南木林县| 高邑县| 双流县| 徐州市|