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

首頁 > 編程 > JavaScript > 正文

JavaScript寄生組合式繼承原理與用法分析

2019-11-19 12:17:54
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript寄生組合式繼承。分享給大家供大家參考,具體如下:

寄生組合式繼承

寄生組合式繼承,就是通過偽造對象來繼承屬性,通過原型鏈的混成形式來繼承方法。

這種技術的基本思路是:不必為了指定子類型的原型而調用超類型的構造函數,因為我們所需要的只是超類型原型的一個副本而已(這一點正是組合繼承的問題,并且正是JavaScript這種原型式語言的強大之處,直接copy對象-原型對象)。本質上,就是使用寄生式繼承來繼承超類型的原型,然后再將結果指定給子類型的原型。

function inheritPrototype(subType, superType){  var prototype = Object.create(superType.prototype); //創建超類型原型副本  prototype.constructor = subType;          //修改原型副本的不同屬性  subType.prototype = prototype;           //指定原型}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;}//繼承方法inheritPrototype(SubType, SuperType);SubType.prototype.sayAge = function(){  console.log(this.age);};var instance1 = new SubType("Nicholas", 29);instance1.colors.push("black");console.log(instance1.colors); //"red, blue, green, black"instance1.sayName();      //"Nicholas"instance1.sayAge();      //29

這里使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼,可得如下運行結果:

這個是寄生組合式繼承的最簡單形式。這個函數接收兩個參數:

1. 子類型構造函數
2. 超類型構造函數

在函數內部,寄生組合式繼承最簡形式分為3個步驟:

1. 創建超類型原型副本;
2. 為創建的副本指定constructor屬性,從而彌補因為重寫SubType原型而失去的默認的constructor屬性,這個原型副本的constructor屬性變化:SuperType

主站蜘蛛池模板: 泰兴市| 三江| 晋城| 二手房| 铅山县| 呈贡县| 克东县| 顺义区| 阆中市| 大厂| 阿拉善盟| 修文县| 民丰县| 丰宁| 柘城县| 定南县| 光泽县| 丹巴县| 涿鹿县| 台江县| 农安县| 舟曲县| 金山区| 鄂州市| 屏山县| 峨边| 田阳县| 西和县| 潮州市| 宾川县| 吉林省| 铜川市| 乐业县| 宿迁市| 大足县| 攀枝花市| 洱源县| 仁怀市| 洱源县| 昂仁县| 当雄县|