国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【D1n910】第7章《JavaScript 設計模式》(2[7/8]/6)

2021-02-16 12:15 作者:愛交作業(yè)的D1N910  | 我要投稿

正常操作,正常分析,大家好,我是D1n910。


今天繼續(xù)來學習 《JavaScript 設計模式》的第二篇 創(chuàng)建型設計模式 的 剩余兩個章節(jié)。

這是一個連續(xù)的讀書筆記,所以如果你之前的內(nèi)容沒有看的話,可以去看看。


這里再次感謝 《Javascript 設計模式》及其作者 張榮銘,專欄內(nèi)容是在它的基礎上生成的。


第二篇 創(chuàng)建型設計模式

創(chuàng)建型設計模式是一類處理對象創(chuàng)建的設計模式。


通過某種方式控制對象的創(chuàng)建來避免基本對象創(chuàng)建時可能導致設計上的問題或增加設計上的復雜度。

第 7 章 語言之魂——原型模式

7.1、語言中的原型(P55)

原型模式(Prototype):用原型實例指向創(chuàng)建對象的類,使用于創(chuàng)建新的對象共享原型對象的屬性以及方法。


在 Javascript 中繼承是靠原型鏈實現(xiàn)的,這樣也能夠?qū)崿F(xiàn)類似的模式。


所以其實下面的內(nèi)容,我們在第二章節(jié)的時候就提到過了,現(xiàn)在相當于老調(diào)重彈,復習一波。


7.2、創(chuàng)建一個焦點圖(P55)

// 創(chuàng)建一個圖片輪播父類

var LoopImages = function(imgArr, container) {

this.imagesArray = imgArr; // 輪播圖片數(shù)組

this.container = container; // 輪播圖片容器

this.createImage = function() {} // 創(chuàng)建輪播圖片

this.changeImage = function() {} // 切換下一張圖片

}


// 上下滑動切換類

var SlideLoopImg = function (imgArr, container) {

// 構(gòu)造函數(shù)繼承圖片播放類

LoopImages.call(this, imgArr, container);

// 重寫繼承的切換下一張圖片方法

this.changeImage = function() {

console.log('上下滑動切換類')

}

}


// 漸隱切換類

var FadeLoopImg = function (imgArr, container) {

// 構(gòu)造函數(shù)繼承圖片播放類

LoopImages.call(this, imgArr, container);

// 重寫繼承的切換下一張圖片方法

this.changeImage = function() {

console.log('漸隱切換類')

}

}


測試了一下,使用正常。



7.3、最優(yōu)的解決方案(P56)

上面這種方式,有一個老毛病了,就是我們希望我們的類一些屬性方法可以從構(gòu)造函數(shù)中抽離出去,放到原型里,這樣可以有共用的效果,也可以不用重新實例化一些屬性方法。


咱們馬上可以想到這么改

// 創(chuàng)建一個圖片輪播父類


var LoopImages = function(imgArr, container) {


this.imagesArray = imgArr; // 輪播圖片數(shù)組


this.container = container; // 輪播圖片容器

}


LoopImages.prototype = {

createImage: function() {}, // 創(chuàng)建輪播圖片


changeImage: function() {} // 切換下一張圖片

}


// 上下滑動切換類


var SlideLoopImg = function (imgArr, container) {


// 構(gòu)造函數(shù)繼承圖片播放類


LoopImages.call(this, imgArr, container);

}


SlideLoopImg.prototype = new LoopImages();


SlideLoopImg.prototype.changeImage = function() {


console.log('上下滑動切換類')


}



// 漸隱切換類


var FadeLoopImg = function (imgArr, container) {


// 構(gòu)造函數(shù)繼承圖片播放類


LoopImages.call(this, imgArr, container);

}

FadeLoopImg.prototype = new LoopImages();


FadeLoopImg.prototype.changeImage = function() {


console.log('漸隱切換類')


}


這里我們就用了之前的組合繼承方法。當然,如果要更好的,可以用寄生組合繼承。


7.4、原型的拓展(P58)

因為上面的子類的 prototype 是共用的。所以單獨在子類的prototype 上添加屬性和方法,也會被其他的子類繼承到,這是子類的拓展。不過因為太自由了,所以盡量還是不要這么做。

FadeLoopImg.prototype.__proto__.c = 1

slideLoopImgObj.c // 1


7.5、原型繼承(P58)

這里說的是繼承多個對象的方法,因為第二章有講過,且可以用 Object.assign()實現(xiàn),這里就不累述了。


End

蛋糕于2021/02/16在福永

【D1n910】第7章《JavaScript 設計模式》(2[7/8]/6)的評論 (共 條)

分享到微博請遵守國家法律
汕尾市| 荥经县| 平江县| 青冈县| 江口县| 遵化市| 安义县| 朔州市| 石嘴山市| 凤凰县| 色达县| 紫阳县| 宜兰市| 汝州市| 开原市| 吉安市| 凤山县| 吴川市| 辰溪县| 南召县| 鹤壁市| 安远县| 台安县| 盐亭县| 安阳市| 钟祥市| 威海市| 江阴市| 鹿邑县| 五河县| 洪雅县| 贵溪市| 东乡县| 远安县| 长海县| 九台市| 上饶市| 大英县| 呼和浩特市| 万全县| 天祝|