成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

canopus4u / 3126人閱讀

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

原型模式

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

//圖片輪播
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");
    }
}
//上下滑動切換類
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");
}
//實例化一個漸隱切換圖片類
var fadeImg = new FadeLoopImg(["01.img","02.img","03.img"],"slide",["left.jpg","right.jpg"]);
//測試用例
console.log(fadeImg.container);//slide
fadeImg.changeImage();//FadeLoogImg changeImage function
原型的拓展

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

//原型的拓展
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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

  • 理解JavaScript的核心知識點:原型

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

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

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

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

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

    xiaotianyi 評論0 收藏0
  • (JavaScript)原型原型對象

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

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

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

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

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

    luxixing 評論0 收藏0

發(fā)表評論

0條評論

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