今天繼續(xù)給大家分享 js 中的元編程塔逃,內(nèi)容主要是通過(guò)幾個(gè)例子掩缓,來(lái)演示一下元編程在實(shí)際用中的使用,這里可以用元編程來(lái)輸出日志鼠渺,日志內(nèi)容可以用于觀察程序的運(yùn)行狀況鸭巴。也可以用元編程來(lái)實(shí)現(xiàn)觀察者模式,用元編程來(lái)實(shí)現(xiàn)觀察者模式拦盹,非常簡(jiǎn)單鹃祖。
1. 訪問(wèn)日志,使用 proxy 我們復(fù)寫其 get 方法(get 方法對(duì)應(yīng)于 (.)點(diǎn)操作符普舆,獲取屬性操作符)恬口。然后用 Reflect 的 get 方法返回屬性值,在此方法里沼侣,通過(guò) Reflect 調(diào)用 get 方法前祖能,可以做一些小動(dòng)作來(lái)修改 get 行為。之前我理解不是那么透徹蛾洛,現(xiàn)在理解上較之前有所提升养铸,所以再此解釋一下,Proxy 代理是代理一個(gè)創(chuàng)建好的對(duì)象。代理模式簡(jiǎn)單地說(shuō)就是在原有對(duì)象上又包裹一層钞螟,以便我們對(duì)對(duì)象的方法和屬性進(jìn)行控制兔甘。通過(guò)代理我們拿到對(duì)象 get 方法,然后在其中寫我們的業(yè)務(wù)鳞滨,最后再用反射(Reflect)來(lái)調(diào)用對(duì)象原有的業(yè)務(wù)裂明,這樣我們就實(shí)現(xiàn)了元編程。
這里我們用一個(gè)代理對(duì)象來(lái)代理 person 對(duì)象太援,然后用代理來(lái)
2.現(xiàn)在當(dāng)下流行 MVVM 前端設(shè)計(jì)模式闽晦,一個(gè)顯著的特征就是數(shù)據(jù)綁定,綁定原理就是我們通過(guò)觀察那些需要我們感興趣的變量提岔,一旦這些變量的值發(fā)生變化仙蛉,就要接受到值發(fā)生變化的通知。然后進(jìn)行一些相關(guān)的動(dòng)作碱蒙。使用 proxy 來(lái)實(shí)現(xiàn)以一下觀察者模式荠瘪。其實(shí)很簡(jiǎn)單,只需要復(fù)寫一下 set 和 delete 方法赛惩,這樣一旦刪除或修改對(duì)象屬性時(shí)哀墓,就會(huì)進(jìn)行相應(yīng)操作。
這里同樣用到代理模式喷兼,和
3. 我們?cè)谟迷幊虒?shí)現(xiàn)一下當(dāng)下流行 SDL(領(lǐng)域特定語(yǔ)言)篮绰,以后會(huì)給大家介紹 groovy 中是如何實(shí)現(xiàn) SDL。
今天分享的內(nèi)容是 js 元編程季惯,希望大家從中獲益或找到一些靈感吠各。當(dāng)然也希望大家多多指正。最后還要感謝大家對(duì)我支持勉抓!我也會(huì)努力給大家?guī)?lái)更好更新的知識(shí)分享