//观察者模式
//监听对象属性的修改,如果属性值发生变化,打印出对象的属性信息(to do somthing)
let queuedobservers = new Set()
//将需要处理的函数,添加到set结构中
let observe = fn => queuedobservers.add(fn)
//需要执行的操作
function print() {
console.log(`${proxy.name},${proxy.age}`)
}
observe(print)
//创建对象的代理对象,拦截对象属性的赋值操作
let observable = obj => new Proxy(obj, {
//拦截对象属性的赋值操作
set(target, key, value, receiver) {
//通过Reflect对目标对象进行属性的赋值
Reflect.set(target, key, value, receiver)
//发出通知 ( to do somthing)
queuedobservers.forEach(observe => observe())
}
})
let target = {
name: "令狐狐冲",
age: 18,
__skill__: "独孤九剑"
}
//根据目标对象生成对应的代理对象
let proxy = observable(target)
proxy.name = "tom"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。