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

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-19 15:39:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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ù)中,以對(duì)象o為模板,在object函數(shù)體里面,定義一個(gè)構(gòu)造函數(shù),讓構(gòu)造函數(shù)的原型對(duì)象(prototype)指向o,

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

二、因?yàn)樵褪嚼^承是個(gè)淺拷貝,所以引用類型的數(shù)據(jù)共享在不同的實(shí)例之間

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é)果就是其他實(shí)例改變的結(jié)果

三、在es5中,新增了一個(gè)函數(shù)Object.create()實(shí)現(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

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

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高手之路]原型式繼承與寄生式繼承詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 来宾市| 云霄县| 富宁县| 双柏县| 永城市| 拉萨市| 嵊泗县| 霞浦县| 巫山县| 万载县| 行唐县| 西乡县| 嘉峪关市| 阜新| 泸西县| 沭阳县| 鲁甸县| 浦北县| 临漳县| 宝兴县| 大理市| 石景山区| 兰考县| 清涧县| 叶城县| 建德市| 闽清县| 沂源县| 仁怀市| 鞍山市| 金乡县| 安宁市| 桐梓县| 吉首市| 邻水| 忻城县| 黑河市| 中宁县| 临颍县| 科技| 鹤峰县|