收藏
回答

请大佬帮我完善监控全局变量的函数?

onWatch(path, callback) {
    const obj = this.globalData;
    const keys = path.split('.'); // 按照 '.' 拆分路径
    let targetObj: any = obj;
    // 遍历路径,找到目标对象
    for (let i = 0; i < keys.length - 1; i++) {
      if (!targetObj[keys[i]]) {
        targetObj[keys[i]] = {}; // 如果路径不存在,则创建新对象
      }
      targetObj = targetObj[keys[i]];
    }
    const lastKey = keys[keys.length - 1];
    let val = targetObj[lastKey]; // 获取当前值
    Object.defineProperty(targetObj, lastKey, {
      set(value) => {
        if (value !== val) { // 只有当新值与当前值不同时才触发回调
          val = value;
          callback(value); // 当值变化时触发回调
        }
      },
      get() => {
        return val; // 返回当前值
      }
    });
  },


globalData:{
  userInfo: {
    name:"",
    age:0


监控userInfo时,必须整体修改userInfo才能触发回调;

监控userInfo.name时,必须只修改userInfo.name才能触发回调;

如何实现在整体修改userInfo或只修改userInfo.name时,都能触发回调。


回答关注问题邀请回答
收藏
登录 后发表内容