ES6——Proxy實現Web服務,進行方法攔截,通過方法名稱生成網址
阿新 • • 發佈:2021-11-01
例項:Web 服務的客戶端
Proxy 物件可以攔截目標物件的任意屬性,這使得它很合適用來寫 Web 服務的客戶端。
const service = createWebService('http://example.com/data'); service.employees().then(json => { const employees = JSON.parse(json); // ··· });上面程式碼新建了一個 Web 服務的介面,這個介面返回各種資料。Proxy 可以攔截這個物件的任意屬性,所以不用為每一種數 據寫一個適配方法,只要寫一個 Proxy 攔截就可以了。
function createWebService(baseUrl) { return new Proxy({},{ get(target, propKey, receiver) {return ()=>httpGet(baseUrl + '/' + propKey); } }); }
完整demo:
const service = createWebService('http://example.com/data'); function createWebService(baseUrl) { return new Proxy({},{ get(target, propKey, receiver) { return ()=>console.log(baseUrl + '/' + propKey); } }); } service.getName()
輸出:
http://example.com/data/getName同理,Proxy 也可以用來實現資料庫的 ORM 層。