ES6利用Proxy和Reflect實現觀察者模式

// 觀察者模式
const queuedObservers = new Set()
const observe = fn => queuedObservers.add(fn)
const observable = obj => new Proxy(obj, {set})

function set(target, key, value, receiver) {
  const result = Reflect.set(target, key, value, receiver)
  queuedObservers.forEach(observeFn => observeFn()) // 執行通知函數
  return result
}

const person = observable({
  name: '張三',
  age: 20
})

function print() {
  console.log(`${person.name}, ${person.age}`)
}
observe(print)
person.name = '李四'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章