es6观察者模式
首页 > >    作者:lininn   2022年11月2日 14:34 星期三   热度:676°   百度已收录  
时间:2022-11-2 14:34   热度:676° 
// 被观察的目标对象
let obj = { name: 'zyc', csdn: '博客'};
// 观察者
function print() {
    console.log('对象被操作了!');
}
// 使用proxy代理
const observeObj = (obj) => new Proxy(obj, {set, get});
// 消息队列
const observeQueue = new Set();
const observe = (fn) => observeQueue.add(fn);
 
// 设置
function set(target, key, value, receiver) {
    let result = Reflect.set(target, key, value, receiver);
    for(let item of observeQueue) {
        item.call(this);
    }
    return result;
}
// 获取
function get(target, key, receiver) {
    let result = Reflect.get(target, key, receiver);
    for (let item of observeQueue) {
        item.call(this);
    }
    return result;
}
 
// 代理对象
let proxy= observeObj(obj);
// 推入消息队列中
observe(print);
 
// 触发测试
proxy.name = "张三";
console.log(proxy.name);
 
二维码加载中...
本文作者:lininn      文章标题: es6观察者模式
本文地址:?post=568
版权声明:若无注明,本文皆为“覆手为雨”原创,转载请保留文章出处。
分享本文至:

返回顶部    首页    手机版本    后花园   会员注册   
版权所有:覆手为雨    站长: lininn