1. 程式人生 > >JavaScript ES6 proxy代理

JavaScript ES6 proxy代理

代理proxy 必須要接收兩個引數,一個是target(object物件),第二個引數是handler(控制代碼引數,可用作代理轉發到target時過濾)

簡單例子:

let target = {}, handler = {};

let proxy = new Proxy(target, handler);

然後 在proxy上進行的物件操作都會轉發都target上,如

proxy.myProp = 'test';

那麼target.myProp 也會是test,同時target.myProp2 = 'test',那麼proxy.myProp2也是test

雖然它們之間的操作是會互相轉發的 但是 target !== proxy (actually   target != proxy)

這是一個簡單的代理繫結效果,但是當target是一個dom物件時,通過代理想要進行dom操作時就會報錯

下面往handler中填充內容:

當我嘗試用代理去獲取a的值時就會丟擲錯誤,而通過target獲取a的值時是不會報錯的,同時,通過target為屬性定義set中過濾掉的鍵是可以的,而通過proxy則拋錯,這說明了handler是對proxy過濾而不對target進行過濾,而且通過proxy讀取到了target定義的屬性c證明了通過target新增的屬性也會轉發到proxy中