最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

[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)論

建德市| 松桃| 台州市| 永顺县| 搜索| 错那县| 什邡市| 民丰县| 平利县| 凤凰县| 苏尼特左旗| 镇沅| 阳泉市| 长丰县| 科尔| 达州市| 荥经县| 鹤峰县| 木里| 吴川市| 汝阳县| 莱阳市| 小金县| 鄂伦春自治旗| 通河县| 古丈县| 黄冈市| 澎湖县| 永定县| 开远市| 邮箱| 天等县| 霍城县| 始兴县| 宁德市| 盐源县| 陵水| 灵丘县| 永泰县| 清涧县| 星子县|