无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

【D1n910】第 22 章 訪問者模式 《JavaScript 設(shè)計(jì)模式》

2021-03-03 11:50 作者:愛交作業(yè)的D1N910  | 我要投稿

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


今天我繼續(xù)來學(xué)習(xí) 《JavaScript 設(shè)計(jì)模式》的第四篇 行為型設(shè)計(jì)模式


這是一個(gè)連續(xù)的讀書筆記,所以如果你之前的內(nèi)容沒有看的話,可以去看看(建議直接看書,當(dāng)然書的例子都比較早了,是2015年之前的代碼內(nèi)容,過了六年了,前端發(fā)展了很多,比如類的聲明可以直接用 Class 了)。


直接查看目錄就可以查看到所有的系列文章啦。




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


現(xiàn)在會(huì)覺得很多設(shè)計(jì)模式離我們有點(diǎn)遙遠(yuǎn),是因?yàn)槲覀儸F(xiàn)在都在用大佬寫好的框架吧,很多設(shè)計(jì)模式都包含在框架里了。


后面有機(jī)會(huì)的話,我希望我可以查看目前主流框架的源代碼,然后進(jìn)行講解。


對(duì)應(yīng)的代碼,請(qǐng)查看

https://github.com/D1N910/JavaScript-design-patterns.git



第四篇 行為型設(shè)計(jì)模式

行為型設(shè)計(jì)模式用于不同對(duì)象之間職責(zé)劃分或算法抽象,行為型設(shè)計(jì)模式不僅僅涉及類和對(duì)象,還涉及類或?qū)ο笾g的交流模式并加以實(shí)現(xiàn)。


第 22?章? 訪問者模式(P152)


訪問者模式(Visitor):針對(duì)于對(duì)象結(jié)構(gòu)中的元素,定義在不改變改對(duì)象的前提下訪問結(jié)構(gòu)中元素的新方法。


Object.prototype.toString就是使用了訪問者模式的設(shè)計(jì)。


我們可以利用?Object.prototype.toString 和 call 很方便地判斷數(shù)據(jù)類型。



對(duì)象訪問器

數(shù)組類型的數(shù)據(jù)有自帶的原生方法,可以進(jìn)行截取 splice、追加數(shù)據(jù) push、彈出最后一個(gè)元素 pop。


考慮通過訪問者模式,實(shí)現(xiàn)對(duì)象也能夠調(diào)用數(shù)組的這些方法。


首先我們要知道,函數(shù)內(nèi)部隱式變量 arguments 以數(shù)組的形式存儲(chǔ)了外部傳參。



首先創(chuàng)建我們的對(duì)象訪問器。



編寫截取splice方法:

參考數(shù)組的 splice 的調(diào)用,數(shù)組數(shù)據(jù).splice(起始下標(biāo),截取第x個(gè)的下標(biāo),用以替換的數(shù)據(jù))。

那么我們截取方法如下。

這里的 arguments[0] 是我們操作的對(duì)象,args 是除了操作對(duì)象以外可能的傳參。


編寫新增push方法:

新增的時(shí)候,我們要獲得 arguments 上的添加參數(shù),所以我們可以調(diào)用剛剛創(chuàng)建好的 splice 來獲得。

這邊記得更新length。


彈出最新加的一個(gè)就比較簡單了。

使用方法:



訪問者模式主要就是非常靈活,解決數(shù)據(jù)與數(shù)據(jù)操作方法之間的耦合。


本章 End

d1n910 于 2021年03月03日 寫于南山后海




【D1n910】第 22 章 訪問者模式 《JavaScript 設(shè)計(jì)模式》的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
通化县| 宝清县| 石首市| 北流市| 赣榆县| 图片| 沅陵县| 新巴尔虎左旗| 扬州市| 理塘县| 临泉县| 睢宁县| 闽清县| 临洮县| 登封市| 平果县| 托克逊县| 台中市| 清涧县| 同心县| 吴忠市| 威宁| 嘉义县| 昔阳县| 玛多县| 琼中| 甘德县| 锡林郭勒盟| 当雄县| 合肥市| 莲花县| 黄浦区| 马鞍山市| 牙克石市| 阿巴嘎旗| 潼南县| 兴宁市| 会理县| 永济市| 昂仁县| 太康县|