const bucket = new Set() const data = {text:'abc'} //使用proxy代理对象 const obj = new Proxy(data, { //获取的时候添加副作用函数 get(target,key){ bucket.add(effect); return target[key] }, //修改的时候执行副作用函数 set(target, key, value){ target[key] = value; bucket.forEach(fn=>fn()); return true; } }) const effect = () => { console.log(obj.text) } effect() setTimeout(()=>{ obj.text = '123' },1000)