今天繼續(xù)給大家分享 js 中的元編程,內(nèi)容主要是通過幾個例子,來演示一下元編程在實(shí)際用中的使用,這里可以用元編程來輸出日志,日志內(nèi)容可以用于觀察程序的運(yùn)行狀況。也可以用元編程來實(shí)現(xiàn)觀察者模式,用元編程來實(shí)現(xiàn)觀察者模式,非常簡單。
1. 訪問日志,使用 proxy 我們復(fù)寫其 get 方法(get 方法對應(yīng)于 (.)點(diǎn)操作符,獲取屬性操作符)。然后用 Reflect 的 get 方法返回屬性值,在此方法里,通過 Reflect 調(diào)用 get 方法前,可以做一些小動作來修改 get 行為。之前我理解不是那么透徹,現(xiàn)在理解上較之前有所提升,所以再此解釋一下,Proxy 代理是代理一個創(chuàng)建好的對象。代理模式簡單地說就是在原有對象上又包裹一層,以便我們對對象的方法和屬性進(jìn)行控制。通過代理我們拿到對象 get 方法,然后在其中寫我們的業(yè)務(wù),最后再用反射(Reflect)來調(diào)用對象原有的業(yè)務(wù),這樣我們就實(shí)現(xiàn)了元編程。
這里我們用一個代理對象來代理 person 對象,然后用代理來
2.現(xiàn)在當(dāng)下流行 MVVM 前端設(shè)計模式,一個顯著的特征就是數(shù)據(jù)綁定,綁定原理就是我們通過觀察那些需要我們感興趣的變量,一旦這些變量的值發(fā)生變化,就要接受到值發(fā)生變化的通知。然后進(jìn)行一些相關(guān)的動作。使用 proxy 來實(shí)現(xiàn)以一下觀察者模式。其實(shí)很簡單,只需要復(fù)寫一下 set 和 delete 方法,這樣一旦刪除或修改對象屬性時,就會進(jìn)行相應(yīng)操作。
這里同樣用到代理模式,和
3. 我們在用元編程實(shí)現(xiàn)一下當(dāng)下流行 SDL(領(lǐng)域特定語言),以后會給大家介紹 groovy 中是如何實(shí)現(xiàn) SDL。
今天分享的內(nèi)容是 js 元編程,希望大家從中獲益或找到一些靈感。當(dāng)然也希望大家多多指正。最后還要感謝大家對我支持!我也會努力給大家?guī)砀酶碌闹R分享