最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

【D1n910】《JavaScript 設(shè)計(jì)模式》第12章 房間裝修 —— 裝飾者模式

2021-02-19 21:09 作者:愛交作業(yè)的D1N910  | 我要投稿

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




今天繼續(xù)來學(xué)習(xí) 《JavaScript 設(shè)計(jì)模式》的第三篇 結(jié)構(gòu)型設(shè)計(jì)模式


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


下面是第十章的展覽,里面其實(shí)鏈接好了所有1~10的專欄內(nèi)容,所以直接戳下面的專欄鏈接就可以快速到達(dá)啦。



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


其實(shí)學(xué)到現(xiàn)在,會(huì)發(fā)現(xiàn)自己已經(jīng)用到過這里面很多種設(shè)計(jì)模式了,這些都是上學(xué)上課、平時(shí)學(xué)習(xí)以及看之前大佬的代碼耳濡目染的。


所以會(huì)有比較多的熟悉感,大家看到對(duì)應(yīng)的模式的話,可以多思考一下平常自己是怎么用的,具體場景是怎么使用的。


第三篇 結(jié)構(gòu)型設(shè)計(jì)模式

結(jié)構(gòu)型設(shè)計(jì)模式關(guān)注于如何將類或者對(duì)象組合成更大、更復(fù)雜的結(jié)構(gòu),以簡化設(shè)計(jì)。


第 12 章 房子裝修——裝飾者模式(P85)

裝飾者模式(Decorator):?在不改變原對(duì)象的基礎(chǔ)上,通過對(duì)其進(jìn)行包裝拓展(添加屬性或者方法)使原有對(duì)象可以滿足用戶的更復(fù)雜需求。


下面是介紹了裝飾者的使用場景之一。作者舉的例子其實(shí)有點(diǎn)怪,不過可以看到思路。


12.1、為輸入框的新需求

現(xiàn)在的需求是在姓名輸入框里點(diǎn)擊輸入框以后顯示輸入內(nèi)容提示:


var nameInput = document.getElementById('nameInput');


var nameWarnInput = document.getElementById('nameWarn');


nameInput.onclick = function () {

? ?nameWarnInput.style.display = 'inline-block'

};


現(xiàn)在希望加需求是點(diǎn)擊輸入框之前,提示“請輸入”,點(diǎn)擊輸入框后不顯示“請輸入”。


看起來很簡單啊,于是啪得一下就寫下面的代碼。


var nameInput = document.getElementById('nameInput');


var nameWarnInput = document.getElementById('nameWarn');


var nameTipsInput = document.getElementById('nameTips');


nameInput.onclick = function () {

? ?nameWarnInput.style.display = 'inline-block'

? ?nameTipsInput.style.display = 'none'

};


這里改name OK,但是有好多輸入框怎么處理呢,比如原來的電話輸入框、性別輸入框……那么在這里我們就可以用裝飾者模式來裝飾我們原有的方法。


12.2、裝飾已有的功能對(duì)象

考慮我們可以用原來對(duì)象上綁定的方法,又可以無損添加新的方法,可以這么寫我們的裝飾器方法。

(是可以用事件綁定器,不過這里主要是講了裝飾器的應(yīng)用場景)

var decorator = function (even, fn) {

? ?// 獲取事件源

? ?var dom = document.getElementById(even);

? ?

? ?// 如果已有事件

? ?if (typeof dom.onclick === 'function') {

? ? ? ?var oldOnclick = dom.onclick;

? ? ? ?dom.onclick = function() {

? ? ? ? ? ?oldOnclick();

? ? ? ? ? ?fn()

? ? ? ?}

? ?} else {

? ? ? ?dom.onclick = fn

? ?}

}

12.3、為輸入框添磚加瓦

用法如下:

decorator('nameInput', function() {

? ?var nameTipsInput = document.getElementById('nameTips');

? ?nameTipsInput.style.display = 'none';

})

本章 End,學(xué)習(xí)進(jìn)度 11/40,加油加油


D1n910 于2021年02月19日 21:08?在福永



【D1n910】《JavaScript 設(shè)計(jì)模式》第12章 房間裝修 —— 裝飾者模式的評(píng)論 (共 條)

分享到微博請遵守國家法律
修文县| 集贤县| 昌黎县| 通城县| 阳江市| 汽车| 镇赉县| 长丰县| 白玉县| 镇沅| 瓦房店市| 无为县| 独山县| 汾西县| 潜山县| 上蔡县| 什邡市| 普格县| 东丽区| 永济市| 木兰县| 凉城县| 秦皇岛市| 肇源县| 阜城县| 广灵县| 寻甸| 高陵县| 得荣县| 新化县| 长岛县| 阿城市| 三都| 宾川县| 江门市| 广昌县| 高平市| 府谷县| 保康县| 杭锦后旗| 达日县|