使用 Proxy 实现观察者模式

52 阅读1分钟
let list = new Set()
let observer = fn => list.add(fn)
function observered(obj){
	return new Proxy(obj,{
		set(target,propKey,value,receiver){
			const result = Reflect.set(target,propKey,value,receiver)
			list.forEach(fn=>fn())
			return result
		}
	})
}

let person  = observered({value: '今天又是需要努力一天'})
let print = function(){
	console.log(person.value)
}
observer(print)
person.value = '明天更要努力'