深层次监听某个变量发生改变

  1. // 创建一个递归 Proxy 函数
  2. function createDeepProxy(target, path = '') {
  3. return new Proxy(target, {
  4. set(obj, prop, value) {
  5. const fullPath = path ? `${path}.${prop}` : prop;
  6. // 如果当前属性是对象或数组,递归创建 Proxy
  7. if (typeof value === 'object' && value !== null) {
  8. value = createDeepProxy(value, fullPath);
  9. }
  10. // 检查属性是否变化
  11. if (obj[prop] !== value) {
  12. console.log(`Property "${fullPath}" changed from "${obj[prop]}" to "${value}"`);
  13. debugger; // 触发断点
  14. }
  15. // 更新属性值
  16. obj[prop] = value;
  17. return true;
  18. }
  19. });
  20. }
  21. // 用 Proxy 包装 _eleinfos
  22. _eleinfos = createDeepProxy(_eleinfos);