欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

[js高手之路]寄生組合式繼承的優(yōu)勢詳解

 更新時間:2017年08月28日 07:58:54   投稿:jingxian  
下面小編就為大家?guī)硪黄猍js高手之路]寄生組合式繼承的優(yōu)勢詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在之前javascript面向?qū)ο笙盗械奈恼吕锩?,我們已?jīng)探討了組合繼承和寄生繼承,回顧下組合繼承:

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

組合繼承有個缺點,父類的構(gòu)造函數(shù)會被調(diào)用兩次.

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

第9行,實例化對象的時候,又調(diào)用一次

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

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

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 ); //復(fù)制父類superObj的原型對象
      proObj.constructor = subObj; //constructor指向子類構(gòu)造函數(shù)
      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

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

以上這篇[js高手之路]寄生組合式繼承的優(yōu)勢詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論