JavaScript ES6 proxy代理
阿新 • • 發佈:2018-12-16
代理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中