行爲重定義 Proxyspa
在目標對象以前架設一層「攔截」,外界對該對象的訪問,都必須先經過這層攔截代理
所以提供了一種機制,能夠對外界的訪問進行過濾和改寫code
Proxy 這個詞的原意是代理,用在這裏表示由它來"代理"某些操做,能夠譯爲 "代理器"對象
var obj = new Proxy({}, { get: function (target, key, receiver) { console.log(`getting ${key}!`); return Reflect.get(target, key, receiver); }, set: function (target, key, value, receiver) { console.log(`setting ${key}!`); return Reflect.set(target, key, value, receiver); } }); // 返回一個 有代理的 新對象
/**** ****/
obj.count = 1;
// setting count!blog
++obj.count;
// getting count!
// setting count!
// 2get
上面代碼對一個空對象架設了一層攔截,重定義了屬性的讀取(get
)和設置(set
)行爲。io
Proxy 實際上重載(overload)了點運算符,即用本身的定義覆蓋了語言的原始定義console
5function
5class
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5