国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:35:35
字體:
來源:轉載
供稿:網友

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

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

組合式繼承缺點是:調用了兩次supertype構造函數,一次在賦值subtype的原型時,一次在實例化子類時call調用,這次調用會屏蔽原型中的兩個同名屬性。

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

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VeVb武林網!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 论坛| 汾阳市| 册亨县| 浑源县| 宁都县| 望奎县| 突泉县| 石河子市| 化州市| 崇义县| 东宁县| 招远市| 来安县| 华亭县| 临颍县| 柳江县| 马鞍山市| 林甸县| 平塘县| 锦屏县| 甘南县| 大竹县| 墨竹工卡县| 家居| 陆丰市| 汾阳市| 遵义市| 南丰县| 仁布县| 大宁县| 都昌县| 永胜县| 丰县| 得荣县| 古蔺县| 新野县| 临夏市| 岐山县| 海丰县| 高安市| 沙湾县|