Proxy实现数据响应式

2024 年 5 月 7 日 星期二
/
9
摘要
这段代码定义了一个`watcher`函数,通过`Proxy`实现监听对象属性的变化。然后创建了一个`obj`对象,和两个用于输出日志的函数`getLogger`和`setBind`。最后使用`watcher`函数对`obj`对象进行监听,输出了属性`a`的获取和修改操作。
let watcher = (target,getLogger,setBind) => {
    let handler = {
        get(target,property,receiver){
            getLogger(target,property)
            return Reflect.get(target,property,receiver)
        },
        set(target,property,vlaue){
            setBind(target,property)
            return Reflect.set(target,property,vlaue)
        }
    }

    return new Proxy(target,handler)
}

let obj = { a: 1 };

let getLogger = (target, property) => {
    console.log(`Getting property '${property}'`);
};

let setBind = (target, property, value) => {
    console.log(`Setting property '${property}' to value '${target[property]}'`);
};

let p = watcher(obj, getLogger, setBind);

console.log(p.a); 

p.a = 2;
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...