国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript學(xué)習(xí)第十天筆記(繼承)

baiy / 3020人閱讀

摘要:繼承原型鏈如果構(gòu)造函數(shù)或?qū)ο蟮脑椭赶驑?gòu)造函數(shù)或?qū)ο螅脑驮僦赶驑?gòu)造函數(shù)或?qū)ο螅源祟愅疲罱K的構(gòu)造函數(shù)或?qū)ο蟮脑椭赶虻脑汀?/p>

繼承 原型鏈

如果構(gòu)造函數(shù)或?qū)ο驛的原型指向構(gòu)造函數(shù)或?qū)ο驜,B的原型再指向構(gòu)造函數(shù)或?qū)ο驝,以此類推,最終的構(gòu)造函數(shù)或?qū)ο蟮脑椭赶騉bject的原型。由此形成了一條鏈狀結(jié)構(gòu),被稱之為原型鏈。按照上述的描述,在B中定義的屬性或方法,可以在A中使用并不需要定義。這就是繼承,它允許每個對象來訪問其原型鏈上的任何屬性或方法。在JS語言中,原型鏈?zhǔn)抢^承的默認(rèn)產(chǎn)生方式。

//原型鏈
function A(){
    this.a = "a";
}
//通過構(gòu)造函數(shù)創(chuàng)建對象
var a = new A();


function B(){
    this.b = "b";
}
//將B的原型指向A
B.prototype = a ;
var b =new B();
console .log(b.a);//a
console .log(b.b);//b

function C(){
    this.c = "c"
}
//將C的原型指向B
C.prototype = b;
var c= new C();
/*console .log(對象.屬性)*/
console .log(c.c);//c
console .log(c.b);//b
console .log(c.a);//a
只繼承與原型

出于對效率的考慮,盡可能地將屬性和方法加到原型上,可以采用以下方式:
1.不要為繼承關(guān)系多帶帶創(chuàng)建新對象。
2.盡量減少運(yùn)行時的方法搜索。

//原型鏈
function A(){

}
A.prototype.a="a";//將自有屬性改寫為原型屬性

function B(){

}
B.prototype=A.prototype; //將B的原型屬性指向A的原型屬性
B.prototype.b = "b";


function C(){
    this .c="c";
}
C.prototype = B.prototype;

var c = new C;
console .log(c.c);
console .log(c.b);
console .log(c.a);
原型鏈的問題

原型鏈雖然強(qiáng)大,用它可以實(shí)現(xiàn)JS中的繼承,但同時也存在一些問題。
1.原型鏈實(shí)際上是在多個構(gòu)造函數(shù)或?qū)ο笾g共享屬性和方法。
2.創(chuàng)建子類的對象時,不能向父級的構(gòu)造函數(shù)傳遞任何參數(shù)。
所以,在實(shí)際開發(fā)中,很少會多帶帶使用原型鏈。

原型式繼承

所謂原型式繼承,就是定義一個函數(shù),該函數(shù)中創(chuàng)建一個歷史性的構(gòu)造函數(shù),將作為參數(shù)傳入的對象作為這個構(gòu)造函數(shù)的原型,最后返回這個構(gòu)造函數(shù)的實(shí)現(xiàn)對象。

/*
    定義一個函數(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) {
            // var attrValue = porp[attrName];
            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 : "HK"
}
// 調(diào)用函數(shù)
var result = fn(obj, {
    age : 26,
    sayMe : function(){
        console.log("this is function");
    }
});
console.log(result.age);
result.sayMe();
Object.create()方法實(shí)現(xiàn)繼承
var obj = {
    name : "HK"
}
var newObj = Object.create(obj, {
    age : {
        value : 26
    },
    sayMe : {
        value : function(){
            console.log("this is function");
        }
    }
});
console.log(newObj.age);
newObj.sayMe();
借助構(gòu)造函數(shù)

在子級中調(diào)用父級元素的屬性

// 定義父級對象的構(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);

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108405.html

相關(guān)文章

  • 26天學(xué)通前端開發(fā)(配資料)

    摘要:網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知識點(diǎn)羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個前端框架。也可以關(guān)注微信公眾號曉舟報告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學(xué)習(xí)方法可以事半功倍,好的學(xué)習(xí)路徑可以指明前進(jìn)方向。這篇文章不僅要寫學(xué)習(xí)路徑,還要寫學(xué)習(xí)方法,還要發(fā)資料,干貨滿滿,準(zhǔn)備接招。 網(wǎng)上有很多前端的學(xué)習(xí)路徑文章,大多是知...

    blair 評論0 收藏0
  • JS學(xué)習(xí)十天筆記 Array類型

    摘要:只有滿足才返回,否則返回。專門用于篩選出數(shù)組中符合函數(shù)判斷條件的元素組成的心數(shù)組。專門用于對原數(shù)組中每個元素執(zhí)行相同的函數(shù)對象規(guī)定的操作。并歸方法將數(shù)組從左向右迭代。 Array類型 數(shù)組的常見方法 檢測數(shù)組 如何確定當(dāng)前是一個數(shù)組,JS提供了以下幾種方式1.typeof無法檢測數(shù)組對象:typrof[]返回object2.instanceof:[]instanceof Array返回...

    Barrior 評論0 收藏0
  • [學(xué)習(xí)筆記] css中的line-height

    摘要:基本概念行高行距行高是指文本行基線間的垂直距離。行框行框是指本行的一個虛擬的矩形框,由該行中行內(nèi)框組成。行框也是瀏覽器渲染模式中的一個概念,無法顯示出來。行框高度等于本行中所有行內(nèi)框高度的最大值。設(shè)置合理的行間距。設(shè)置固定的行間距。 又已經(jīng)快十天沒有寫文章了,一周一篇其實(shí)好艱難的說……本來想接著上篇事件(上篇)總結(jié)事件類型的,可是看完之后整理下還是有點(diǎn)亂,就一直拖著沒寫……實(shí)在是不能再...

    frolc 評論0 收藏0
  • 十天-《企業(yè)應(yīng)用架構(gòu)模式》-數(shù)據(jù)源架構(gòu)模式

    摘要:運(yùn)行機(jī)制表數(shù)據(jù)入口包含了用于訪問單個表或試圖的所有,如選擇插入更新刪除等。其他代碼調(diào)用它的方法來實(shí)現(xiàn)所有與數(shù)據(jù)庫的交互。示例如下圖分別是普通情況下充分利用特征下的表數(shù)據(jù)入口實(shí)現(xiàn)行數(shù)據(jù)入口充當(dāng)數(shù)據(jù)源中單條記錄入口的對象,每行一個實(shí)例。 1. 表數(shù)據(jù)入口   充當(dāng)數(shù)據(jù)庫表訪問入口的對象,一個實(shí)例處理表中所有的行。 1)運(yùn)行機(jī)制:     表數(shù)據(jù)入口包含了用于訪問單個表或試圖的所有SQL,如...

    Drummor 評論0 收藏0

發(fā)表評論

0條評論

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