网站建设做什么会计分录,贵阳有哪些做网站的公司,天涯重庆论坛,淘宝客做网站自动更新当用户指定了 watch 中的deep属性为 true 时#xff0c;如果当前监控的值是数组类型。会对对象中的每一项进行求值#xff0c;此时 会将当前 watcher存入到对应属性的依赖中#xff0c;这样数组中对象发生变化时也会通知数据更新 watch 本质上是为每个监听属性 setter 创建了… 当用户指定了 watch 中的deep属性为 true 时如果当前监控的值是数组类型。会对对象中的每一项进行求值此时 会将当前 watcher存入到对应属性的依赖中这样数组中对象发生变化时也会通知数据更新 watch 本质上是为每个监听属性 setter 创建了一个 watcher当被监听的属性更新时调用传入的回调函数。常见的配置选项有 deep 和 immediate对应原理如下 deep深度监听对象为对象的每一个属性创建一个 watcher从而确保对象的每一个属性更新时都会触发传入的回调函数。主要原因在于对象属于引用类型单个属性的更新并不会触发对象 setter因此引入 deep 能够很好地解决监听对象的问题。同时也会引入判断机制确保在多个属性更新时回调函数仅触发一次避免性能浪费。 immediate在初始化时直接调用回调函数可以通过在 created 阶段手动调用回调函数实现相同的效果 get () { pushTarget(this) // 先将当前依赖放到 Dep.target上 let value const vm this.vm try { value this.getter.call(vm, vm) } catch (e) { if (this.user) { handleError(e, vm, getter for watcher ${this.expression}) } else { throw e } } finally { if (this.deep) { // 如果需要深度监控 traverse(value) // 会对对象中的每一项取值,取值时会执行对应的get方法 }popTarget()
}