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

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式-原型模式

canopus4u / 3181人閱讀

摘要:原型模式就是將可復(fù)用的,可共享的耗時(shí)大的從父類中提出來,然后放在其原型中,然后通過組合繼承或者寄生組合式繼承將方法和屬性繼承下來,對(duì)于子類中那些需要重寫的方法進(jìn)行重寫,這樣子類創(chuàng)建的對(duì)象既有子類的屬性和方法,也共享了父類的原型方法。

原型模式

原型模式:用原型實(shí)例指向創(chuàng)建對(duì)象的類,使用于創(chuàng)建新的對(duì)象的類共享原型對(duì)象的屬性以及方法。
父類總是要被子類繼承的,如果將屬性和方法都寫在父類的構(gòu)造函數(shù)里會(huì)有一些問題,比如每次子類繼承都要?jiǎng)?chuàng)建一次父類,假如父類的構(gòu)造函數(shù)中創(chuàng)建時(shí)存在很多耗時(shí)的邏輯,或者每次初始化都要做一些重復(fù)性的東西,這樣性能消耗還是蠻大的。為了提高性能,我們需要一種共享機(jī)制。原型模式就是將可復(fù)用的,可共享的、耗時(shí)大的從父類中提出來,然后放在其原型中,然后通過組合繼承或者寄生組合式繼承將方法和屬性繼承下來,對(duì)于子類中那些需要重寫的方法進(jìn)行重寫,這樣子類創(chuàng)建的對(duì)象既有子類的屬性和方法,也共享了父類的原型方法。
以圖片輪播為例:

//圖片輪播
var LoopImages = function (imgArr,container) {
    this.imageArray = imgArr;//輪播圖片數(shù)組
    this.container = container;//輪播圖片容器
}
LoopImages.prototype = {
    //創(chuàng)建輪播圖片
    createImage : function () {
        console.log("LoopImages createImage function");
    },
    //切換下一張圖片
    changeImage:function () {
        console.log("LoopImages changeImage function");
    }
}
//上下滑動(dòng)切換類
var SlideLooImg = function (imgArr,container) {
    //構(gòu)造函數(shù)繼承圖片輪播類
    LoopImages.call(this,imgArr,container);
}
SlideLooImg.prototype = new LoopImages();
//重寫繼承的切換下一張圖片方法
SlideLooImg.prototype.changeImage = function () {
    console.log("SlideLoopImg changeImg function");
}
//漸隱切換類
var FadeLoopImg = function (imgArr,container,arrow) {
    LoopImages.call(this,imgArr,container);
    //切換箭頭私有變量
    this.arrow = arrow;
}
FadeLoopImg.prototype = new LoopImages();
FadeLoopImg.prototype.changeImage = function () {
    console.log("FadeLoogImg changeImage function");
}
//實(shí)例化一個(gè)漸隱切換圖片類
var fadeImg = new FadeLoopImg(["01.img","02.img","03.img"],"slide",["left.jpg","right.jpg"]);
//測(cè)試用例
console.log(fadeImg.container);//slide
fadeImg.changeImage();//FadeLoogImg changeImage function
原型的拓展

原型對(duì)象是一個(gè)共享的對(duì)象,無論是父類的實(shí)例對(duì)象還是子類的繼承,都是對(duì)它的一個(gè)指向引用,所以原型對(duì)象才會(huì)被共享。在任何時(shí)候,都可以對(duì)基類或者子類進(jìn)行方法的拓展,并且所有被實(shí)例化的對(duì)象或者類都能獲取這些方法。
如下:

//原型的拓展
LoopImages.prototype.getImageLength = function () {
    return this.imageArray.length;
}
FadeLoopImg.prototype.getContainer = function () {
    return this.container;
}
console.log(fadeImg.getImageLength());//3
console.log(fadeImg.getContainer());//slide

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

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

相關(guān)文章

  • 理解JavaScript的核心知識(shí)點(diǎn):原型

    摘要:首先,需要來理清一些基礎(chǔ)的計(jì)算機(jī)編程概念編程哲學(xué)與設(shè)計(jì)模式計(jì)算機(jī)編程理念源自于對(duì)現(xiàn)實(shí)抽象的哲學(xué)思考,面向?qū)ο缶幊淌瞧湟环N思維方式,與它并駕齊驅(qū)的是另外兩種思路過程式和函數(shù)式編程。 JavaScript 中的原型機(jī)制一直以來都被眾多開發(fā)者(包括本人)低估甚至忽視了,這是因?yàn)榻^大多數(shù)人沒有想要深刻理解這個(gè)機(jī)制的內(nèi)涵,以及越來越多的開發(fā)者缺乏計(jì)算機(jī)編程相關(guān)的基礎(chǔ)知識(shí)。對(duì)于這樣的開發(fā)者來說 J...

    iKcamp 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐 | 01 - 面向?qū)ο蟮?em>JavaScript

    摘要:在中,并沒有對(duì)抽象類和接口的支持。例如,當(dāng)對(duì)象需要對(duì)象的能力時(shí),可以有選擇地把對(duì)象的構(gòu)造器的原型指向?qū)ο螅瑥亩_(dá)到繼承的效果。本節(jié)內(nèi)容為設(shè)計(jì)模式與開發(fā)實(shí)踐第一章筆記。 動(dòng)態(tài)類型語言 編程語言按數(shù)據(jù)類型大體可以分為兩類:靜態(tài)類型語言與動(dòng)態(tài)類型語言。 靜態(tài)類型語言在編譯時(shí)已確定變量類型,動(dòng)態(tài)類型語言的變量類型要到程序運(yùn)行時(shí),待變量被賦值后,才具有某種類型。 而JavaScript是一門典型...

    suxier 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)》第六章 讀書筆記 之 javascript對(duì)象的幾種創(chuàng)建方式

    摘要:三種使用構(gòu)造函數(shù)創(chuàng)建對(duì)象的方法和的作用都是在某個(gè)特殊對(duì)象的作用域中調(diào)用函數(shù)。這種方式還支持向構(gòu)造函數(shù)傳遞參數(shù)。叫法上把函數(shù)叫做構(gòu)造函數(shù),其他無區(qū)別適用情境可以在特殊的情況下用來為對(duì)象創(chuàng)建構(gòu)造函數(shù)。 一、工廠模式 工廠模式:使用字面量和object構(gòu)造函數(shù)會(huì)有很多重復(fù)代碼,在此基礎(chǔ)上改進(jìn)showImg(https://segmentfault.com/img/bVbmKxb?w=456&...

    xiaotianyi 評(píng)論0 收藏0
  • (JavaScript)原型原型對(duì)象

    摘要:值得注意的是原型對(duì)象也擁有一個(gè)屬性指向其函數(shù)。以上的原因就造成了很少有使用純的原型模式創(chuàng)建對(duì)象,而其他混合使用原型模式的創(chuàng)建對(duì)象模式就不在這里展開說了。 第一次記錄自己學(xué)習(xí)的腳步,我選擇了JavaScript中自認(rèn)為比較熟悉的一小部分來說,誠(chéng)摯的希望能夠得到各位前輩的批評(píng)與指正。而對(duì)于看到我這篇筆記希望從這篇筆記中收獲知識(shí)的讀者,我希望你們可以參考權(quán)威,擁有自己的真知灼見而不聽我一家之...

    Muninn 評(píng)論0 收藏0
  • JavaScript面向?qū)ο蟮某绦?em>設(shè)計(jì)

    摘要:目錄導(dǎo)語理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方式的繼承機(jī)制原型對(duì)象原型鏈與原型對(duì)象相關(guān)的方法小結(jié)導(dǎo)語前面的系列文章,基本把的核心知識(shí)點(diǎn)的基本語法標(biāo)準(zhǔn)庫等章節(jié)講解完本章開始進(jìn)入核心知識(shí)點(diǎn)的高級(jí)部分面向?qū)ο蟮某绦蛟O(shè)計(jì),這一部分的內(nèi)容將會(huì)對(duì)對(duì)象 目錄 導(dǎo)語 1.理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì) 2.創(chuàng)建對(duì)象的方式 3.JavaScript的繼承機(jī)制 3.1 原型對(duì)象 3.2 原型鏈 3.3 與...

    gitmilk 評(píng)論0 收藏0
  • javascript設(shè)計(jì)模式與開發(fā)實(shí)踐(二)- 封裝和原型模式

    摘要:對(duì)象會(huì)記住它的原型給對(duì)象提供了一個(gè)名為的隱藏屬性,某個(gè)對(duì)象的屬性默認(rèn)會(huì)指向它的構(gòu)造器的原型對(duì)象,即。我們通過代碼來驗(yàn)證再來實(shí)際上,就是對(duì)象跟對(duì)象構(gòu)造器的原型聯(lián)系起來的紐帶切記這句話,對(duì)未來理解原型鏈很有幫助。 封裝 封裝數(shù)據(jù) 在許多語言的對(duì)象系統(tǒng)中,封裝數(shù)據(jù)是由語法解析來實(shí)現(xiàn)的,這些語言也許提供了 private、public、protected 等關(guān)鍵字來提供不同的訪問權(quán)限。例如:j...

    luxixing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<