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

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

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

在之前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è)缺點(diǎn),父類的構(gòu)造函數(shù)會(huì)被調(diào)用兩次.

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

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

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

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

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的原型對(duì)象
      proObj.constructor = subObj; //constructor指向子類構(gòu)造函數(shù)
      subObj.prototype = proObj; //再把這個(gè)對(duì)象給子類的原型對(duì)象
    }

    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

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

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

相關(guān)文章

最新評(píng)論