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

[js高手之路]原型式繼承與寄生式繼承詳解

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

一、原型式繼承本質(zhì)其實就是個淺拷貝,以一個對象為模板復制出新的對象

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    var obj = {
      name : 'ghostwu',
      age : 22,
      show : function(){
        return this.name + ',' + this.age;
      }
    };
    var obj2 = object( obj );
    console.log( obj2.name, obj.age, obj.show() );

object函數(shù)中,以對象o為模板,在object函數(shù)體里面,定義一個構(gòu)造函數(shù),讓構(gòu)造函數(shù)的原型對象(prototype)指向o,

返回構(gòu)造函數(shù)的一個實例,這樣就可以訪問到對象o的所有屬性和方法.

二、因為原型式繼承是個淺拷貝,所以引用類型的數(shù)據(jù)共享在不同的實例之間

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    var obj = {
      skills : [ 'php', 'javascript' ]
    };
    var obj2 = object( obj );
    obj2.skills.push( 'python' );
    var obj3 = object( obj );
    console.log( obj3.skills ); //php,javascript,python

obj2改變了skills數(shù)組,obj3的skills結(jié)果就是其他實例改變的結(jié)果

三、在es5中,新增了一個函數(shù)Object.create()實現(xiàn)了原型式繼承

var obj = {
      skills : [ 'php', 'javascript' ]
    };
    var obj2 = Object.create( obj );
    obj2.skills.push( 'python' );
    var obj3 = Object.create( obj );
    console.log( obj3.skills ); //php,javascript,python

四,寄生式繼承就是把原型式繼承再次封裝,然后在對象上擴展新的方法,再把新對象返回

function object( o ){
      var G = function(){};
      G.prototype = o;
      return new G();
    }
    function CreateObj( srcObj ){
      var dstObj = object( srcObj );
      dstObj.sayName = function(){
        return this.userName;
      }
      return dstObj;
    }
    var obj = {
      userName : 'ghostwu',
    };
    var obj2 = CreateObj( obj );
    console.log( obj2.sayName() ); //ghostwu

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

相關文章

最新評論