浅谈JS监听非自定义属性

简介: 浅谈JS监听非自定义属性

如何监听

在我们开发项目中,如果有遇到需要监听某一个值变化后,做出一些特殊操作,正常的双向绑定数据都可以直接有API能够监听到变化,像Vue的watch , Angular的ngDoCheck 、ngOnChanges 、React的useEffect 等,但是如果我们项目中需要监听某个框架内部的值变化后,调用一些方法,如果上面方法都无法满足该怎么处理?

使用Vue2原理监听

 //记得在监听的时候,在上面再赋值一遍,防止set的时候为null
Object.defineProperty(dataParent, key, {
      get() {
        return value;
      },
      set(newVal) {
        const oldVal = value;
        value = newVal;
  //当监听值改变后执行操作
        watcher$.next({ newVal, oldVal });
      }
    });
//分割线
//下面使用了rxjs来通知值变化后执行操作,并停止监听后进行销毁
this.setOptions(this.props.options)
this.watchData(this.props, 'options', this.destroy$).subscribe(x => {
      this.setOptions(x.newVal);
});
watchData(dataParent: any, key: string, destroy$: Subject<void>) {
    const watcher$ = new Subject<{ newVal: any; oldVal: any }>();
    let value = dataParent[key];
    Object.defineProperty(dataParent, key, {
      get() {
        return value;
      },
      set(newVal) {
        const oldVal = value;
        value = newVal;
  //当监听值改变后执行操作
        watcher$.next({ newVal, oldVal });
      }
    });
    return watcher$.pipe(takeUntil(destroy$));
  }
相关文章
|
2月前
|
JavaScript 前端开发
JavaScript中属性遍历的三种方法
JavaScript中属性遍历的三种方法
|
1月前
|
前端开发 JavaScript 算法
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
深入探究 JavaScript 中的 String:常用方法和属性全解析(下)
|
1月前
|
前端开发 JavaScript 索引
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
深入探究 JavaScript 中的 String:常用方法和属性全解析(中)
|
1月前
|
存储 前端开发 JavaScript
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
深入探究 JavaScript 中的 String:常用方法和属性全解析(上)
|
1月前
|
存储 前端开发 JavaScript
解锁 JavaScript 数组的强大功能:常用方法和属性详解(下)
解锁 JavaScript 数组的强大功能:常用方法和属性详解(下)
|
1月前
|
存储 前端开发 JavaScript
解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)
解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)
|
1月前
|
JavaScript 前端开发 数据处理
JavaScript对象的秘密武器:属性检测技巧大揭秘!
JavaScript对象的秘密武器:属性检测技巧大揭秘!
|
1月前
|
前端开发 JavaScript
探索JavaScript元素节点的属性和方法
探索JavaScript元素节点的属性和方法
7 0
|
1月前
|
JavaScript 前端开发 数据处理
【JavaScript】属性描述符
这些描述符可以通过 Object.defineProperty() 方法来定义或修改对象的属性特性。通过使用这些描述符,我们可以灵活地控制和定义对象的属性行为,例如限制某些属性只读、隐藏某些不需要枚举的属性等。 总的来说,对象的属性描述符提供了对对象属性行为进行详细控制和定义的能力,包括可配置性、可枚举性、可写性、获取和设置方法等。这使得我们能够更好地管理和操作对象中的各个属性。
23 0
|
2月前
|
JavaScript 前端开发 API
(简单详细)javascript中new url()属性,轻松解析url地址
(简单详细)javascript中new url()属性,轻松解析url地址
53 0

相关产品

  • 云迁移中心