亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

淺談原型式繼承、借助構(gòu)造函數(shù)、組合方式繼承

wangjuntytl / 1387人閱讀

摘要:想要解決這樣的問題的話,可以借助構(gòu)造函數(shù)也可以叫做偽造對象或經(jīng)典繼承。這種方式實現(xiàn)非常簡單,就是在子對象的構(gòu)造函數(shù)中調(diào)用父對象的構(gòu)造函數(shù)。

原型式繼承

原型式繼承,就是一定一個函數(shù),該函數(shù)中創(chuàng)建一個臨時性的構(gòu)造函數(shù),將作為參數(shù),傳入的對象作為這個構(gòu)造函數(shù)的原型,最后返回這個構(gòu)造函數(shù)的實例對象

/*定義函數(shù):用于實現(xiàn)對象之間的繼承
    參數(shù):
    obj:表示繼承關(guān)系中的父級對象
    prop:對象格式,表示繼承關(guān)系中的子級對象的屬性和方法
*/
function fn(obj,porp){
    //定義一個臨時的構(gòu)造函數(shù)
    function Fun(){
       //遍歷對象的屬性和方法
       for(var attrName in porp){
           this[attrName]=porp[attrName];
       }
    }
    //將函數(shù)的參數(shù)作為構(gòu)造函數(shù)的原型
    Fun.prototype=obj;
    //將構(gòu)造函數(shù)創(chuàng)建的對象進(jìn)行返回
    return new Fun();
}
var obj={
    name:"前端"
}
//調(diào)用函數(shù)
var result=fn(obj,{
    age:20,
    sayMe:function(){
        console.log("this is function");
    }
});
console.log(result.age);
result.sayMe();

利用Object.create()方法實現(xiàn)繼承

var obj={
    name:"前端"
}
var newObj=object.create(obj,{
    age:{
        value:20
    },
    sayMe:{
        value:function(){
            console.log("this is function");
        }
    }
});
console.log(newObj.age);
newObj.sayMe();
借助構(gòu)造函數(shù)

無論是原型鏈還是原型式繼承,都具有相同的問題。想要解決這樣的問題的話,可以借助構(gòu)造函數(shù)(也可以叫做偽造對象或經(jīng)典繼承)。
這種方式實現(xiàn)非常簡單,就是在子對象的構(gòu)造函數(shù)中調(diào)用父對象的構(gòu)造函數(shù)。具體可以通過調(diào)用apply()和call()方法實現(xiàn)。
apply()和call()方法都允許傳遞指定某個對象的this。對于繼承來講,可以實現(xiàn)在子對象的構(gòu)造函數(shù)中調(diào)用父對象的構(gòu)造函數(shù)時,將子對象的this和父對象的this綁定在一起

//定義父級對象的構(gòu)造函數(shù)
function Parent(){
    this.parent="parent";
}

//定義子級對象的構(gòu)造函數(shù)
function child(){
    //調(diào)用父級對象的構(gòu)造函數(shù):使用apply()或call()方法
    Parent.call(this);
    
    this.child="child";
}
//創(chuàng)建子級對象
var child=new Child();
console.log(child);
組合方式繼承

組合繼承,也叫做偽經(jīng)典繼承,指的是將原型鏈或原型式繼承和借助構(gòu)造函數(shù)的技術(shù)組合在一起,發(fā)揮二者長處的一種繼承方式
具體實現(xiàn)的思路就是:

使用原型鏈或原型式繼承實現(xiàn)對原型的屬性和方法的繼承。

通過借助構(gòu)造函數(shù)實現(xiàn)對實例對象的屬性的繼承

這樣,既通過在原型上定義方法實現(xiàn)了函數(shù)的重用,又可以保證每個對象都有自己的專有屬性

function Parent(){
    //構(gòu)造函數(shù)的自有屬性
    this.name="前端";
}
//構(gòu)造函數(shù)的原型屬性
Parent.prototype.age=20;

function Child(){
    //繼承父級構(gòu)造函數(shù)中的自有屬性
    Parent.call(this);
    
    this.job="IT";
}
//繼承父級構(gòu)造函數(shù)中的原型屬性
Child.prototype=Parent.prototype;

var child=new Child();

console.log(child.job);
console.log(child.age);
console.log(child.name);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/108365.html

相關(guān)文章

  • 淺談JavaScript繼承

    摘要:組合方式實現(xiàn)繼承原型鏈構(gòu)造函數(shù)喵喵喵汪汪汪與的唯一區(qū)別是多了這一句組合方式實現(xiàn)了對構(gòu)造函數(shù)內(nèi)和原型上所有屬性和方法的繼承,并且的實例對象之間也不會相互干擾。 前言 關(guān)于JavaScript繼承相關(guān)的定義和方法網(wǎng)上已經(jīng)有很多解釋啦,本菜鳥就不抄抄寫寫惹人嫌了,本文主要探討三種基本的繼承方式并且給出優(yōu)化方案。 正文 借助構(gòu)造函數(shù)實現(xiàn)繼承 function Parent1() { ...

    Jingbin_ 評論0 收藏0
  • 淺談JavaScript的面向?qū)ο蠛退姆庋b、繼承、多態(tài)

    摘要:會造成內(nèi)存浪費(fèi)的問題構(gòu)造函數(shù)繼承聲明父類聲明子類生成實例組合式繼承組合式繼承是汲取了兩者的優(yōu)點(diǎn),既避免了內(nèi)存浪費(fèi),又使得每個實例化的子類互不影響。 寫在前面 既然是淺談,就不會從原理上深度分析,只是幫助我們更好地理解... 面向?qū)ο笈c面向過程 面向?qū)ο蠛兔嫦蜻^程是兩種不同的編程思想,剛開始接觸編程的時候,我們大都是從面向過程起步的,畢竟像我一樣,大家接觸的第一門計算機(jī)語言大概率都是C語...

    MAX_zuo 評論0 收藏0
  • JavaScript繼承詳解

    摘要:可以通過構(gòu)造函數(shù)和原型的方式模擬實現(xiàn)類的功能。原型式繼承與類式繼承類式繼承是在子類型構(gòu)造函數(shù)的內(nèi)部調(diào)用超類型的構(gòu)造函數(shù)。寄生式繼承這種繼承方式是把原型式工廠模式結(jié)合起來,目的是為了封裝創(chuàng)建的過程。 js繼承的概念 js里常用的如下兩種繼承方式: 原型鏈繼承(對象間的繼承) 類式繼承(構(gòu)造函數(shù)間的繼承) 由于js不像java那樣是真正面向?qū)ο蟮恼Z言,js是基于對象的,它沒有類的概念。...

    Yangyang 評論0 收藏0
  • javascript-繼承

    摘要:化偽花貓偽,花,貓借助構(gòu)造函數(shù)無論是原型鏈還是原型式繼承,都有相同的問題。要解決這樣的問題,可以借助構(gòu)造函數(shù)也可以叫做偽造對象或經(jīng)典繼承。對于繼承來講,可以試想子對象的構(gòu)造函數(shù)中調(diào)用父對象的構(gòu)造函數(shù)時,講子對象的和父對象的綁定在一起。 繼承 原型式繼承 所謂原型式繼承,就是定義一個函數(shù),該函數(shù)中創(chuàng)建一個臨時性的構(gòu)造函數(shù),并將作為參數(shù)傳入的對象作為這個構(gòu)造函數(shù)的原型,最后返回這個構(gòu)造函數(shù)...

    kohoh_ 評論0 收藏0
  • 淺談JavaScript面向?qū)ο?/b>

    摘要:不必在構(gòu)造函數(shù)中定義對象實例的信息。其次,按照一切事物皆對象的這餓極本的面向?qū)ο蟮姆▌t來說,類本身并不是一個對象,然而原型方式的構(gòu)造函數(shù)和原型本身也是個對象。第二個問題就是在創(chuàng)建子類型的實例時,不能向超類型的構(gòu)造函數(shù)中傳遞參數(shù)。 前言 對象(Object)應(yīng)該算是js中最為重要的部分,也是js中非常難懂晦澀的一部分。更是面試以及框架設(shè)計中各出沒。寫這篇文章,主要參考與JavaScrip...

    cyixlq 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<