觀察者模式是指函數自動觀察數據對象的變化, 一旦對象有變化,函數就會自動執行。函數
它定義了一種一對多的依賴關係,咱們用Proxy來實現一個簡單的觀察者模式(PS: 初學咱們認爲代理
觀察者模式 == 發佈訂閱模式, 其實它們有點不一樣)。code
例子:對象
const callbacks = new Set();
const observe = fn => callbacks.add(fn);
const observable = obj => new Proxy(obj, {set});
function set (target, key, value, receiver) {
const result = Reflect.set(target, key, value, receiver);
callbacks.forEach(observe => observe());
return result;
}
// 一個可觀察的對象
const person = observable({name: 'liu', age: 18});
function change() {
console.log(`${person.name} is ${person.age}`);
}
observe(change);
person.age = 19;
打印結果:當age發生變化時:打印出blog
這樣咱們就簡單的實現了一個觀察者模式。get