javascript 中的自動化—元編程(下)

今天繼續(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)操作。

set 和 delete 方法

這里同樣用到代理模式,和

打印效果

3. 我們在用元編程實(shí)現(xiàn)一下當(dāng)下流行 SDL(領(lǐng)域特定語言),以后會給大家介紹 groovy 中是如何實(shí)現(xiàn) SDL。

今天分享的內(nèi)容是 js 元編程,希望大家從中獲益或找到一些靈感。當(dāng)然也希望大家多多指正。最后還要感謝大家對我支持!我也會努力給大家?guī)砀酶碌闹R分享

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 6,689評論 3 22
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,391評論 6 13
  • 特別說明,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 178評論 0 0
  • 《墳場之書》[英] 尼爾·蓋曼 成長的故事,少年的冒險,傳統(tǒng)的內(nèi)核里面添加了奇幻的元素,成了另一番風(fēng)味。童書,壞人...
    桓宣閱讀 1,196評論 0 1
  • 隨著當(dāng)今社會電子科技的迅猛發(fā)展,互聯(lián)網(wǎng)、電影、電視、廣播、手機(jī)等各種信息傳播方式紛涌而至,整個社會進(jìn)入了“電子媒介...
    十里春風(fēng)桃李濃閱讀 508評論 2 6

友情鏈接更多精彩內(nèi)容