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

首頁 > 編程 > JavaScript > 正文

[js高手之路]寄生組合式繼承的優勢詳解

2019-11-19 15:39:32
字體:
來源:轉載
供稿:網友

在之前javascript面向對象系列的文章里面,我們已經探討了組合繼承和寄生繼承,回顧下組合繼承:

function Person( uName ){      this.skills = [ 'php', 'javascript' ];      this.userName = uName;    }    Person.prototype.showUserName = function(){      return this.userName;    }    function Teacher ( uName ){      Person.call( this, uName );    }    Teacher.prototype = new Person();    var oT1 = new Teacher( 'ghostwu' );    oT1.skills.push( 'linux' );    var oT2 = new Teacher( 'ghostwu' );    console.log( oT2.skills ); //php,javascript    console.log( oT2.showUserName() ); //ghostwu

組合繼承有個缺點,父類的構造函數會被調用兩次.

第11行,設置子類原型對象(prototype),調用了第一次

第9行,實例化對象的時候,又調用一次

構造函數的目的是為了復制屬性,第9行肯定是不能少的,第11行的目的是為了獲取到父類原型對象(prototype)上的方法,基于這個目的,有沒有別的方法

可以做到 在不需要實例化父類構造函數的情況下,也能得到父類原型對象上的方法呢? 當然可以,我們可以采用寄生式繼承來得到父類原型對象上的方法

function Person( uName ){      this.skills = [ 'php', 'javascript' ];      this.userName = uName;    }    Person.prototype.showUserName = function(){      return this.userName;    }    function Teacher ( uName ){      Person.call( this, uName );    }    function object( o ){      var G = function(){};      G.prototype = o;      return new G();    }    function inheritPrototype( subObj, superObj ){      var proObj = object( superObj.prototype ); //復制父類superObj的原型對象      proObj.constructor = subObj; //constructor指向子類構造函數      subObj.prototype = proObj; //再把這個對象給子類的原型對象    }    inheritPrototype( Teacher, Person );    var oT1 = new Teacher( 'ghostwu' );    oT1.skills.push( 'linux' );    var oT2 = new Teacher( 'ghostwu' );    console.log( oT2.skills ); //php,javascript    console.log( oT2.showUserName() ); //ghostwu

其實,說白了寄生組合式繼承就是一個借用構造函數 + 相當于淺拷貝父類的原型對象

以上這篇[js高手之路]寄生組合式繼承的優勢詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林浩特市| 双流县| 华容县| 离岛区| 九龙坡区| 南和县| 北京市| 西和县| 安阳县| 清水县| 冀州市| 乐昌市| 九龙坡区| 百色市| 普兰店市| 涿州市| 黔江区| 南城县| 柳林县| 酒泉市| 洪洞县| 南涧| 邹城市| 元江| 靖江市| 永年县| 通江县| 盘山县| 旌德县| 加查县| 三穗县| 澎湖县| 集安市| 繁昌县| 新郑市| 光泽县| 汝州市| 寿阳县| 嘉黎县| 苗栗市| 那曲县|