五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
内江市| 彭山县| 江达县| 绥棱县| 土默特右旗| 河曲县| 张北县| 禄劝| 咸阳市| 华池县| 宁明县| 黔南| 山西省| 都兰县| 永平县| 台山市| 黎川县| 邓州市| 庆安县| 建宁县| 邹城市| 荆州市| 通化县| 江川县| 东海县| 永泰县| 吴江市| 额济纳旗| 建瓯市| 沙河市| 武功县| 牡丹江市| 青神县| 赤峰市| 璧山县| 藁城市| 崇仁县| 长岛县| 宁夏| 高台县| 方正县|