1. 程式人生 > 其它 >ES6——Proxy實現Web服務,進行方法攔截,通過方法名稱生成網址

ES6——Proxy實現Web服務,進行方法攔截,通過方法名稱生成網址

例項: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 層。