Javascript 在Vue中,将首先调用哪个观察者?一个物体上的深表,还是该物体的财产上的表?

Javascript 在Vue中,将首先调用哪个观察者?一个物体上的深表,还是该物体的财产上的表?,javascript,vue.js,Javascript,Vue.js,如果我有以下Vue对象,并且myObj.myProp1已更改,那么将首先调用哪个观察程序?什么决定了订单?有没有办法操纵订单 newvue({ 数据:{ myObj:{ myProp1:“一个”, myProp2:“两个” } }, 计算:{ myProp1:函数(){返回this.myObj.myProp1;} }, 观察:{ myProp1:函数(){alert(“myProp1已更改”)}, myObj:{ 处理程序:函数(){alert(“myObj已更改”)}, 深:是的 } } })

如果我有以下Vue对象,并且myObj.myProp1已更改,那么将首先调用哪个观察程序?什么决定了订单?有没有办法操纵订单

newvue({
数据:{
myObj:{
myProp1:“一个”,
myProp2:“两个”
}
},
计算:{
myProp1:函数(){返回this.myObj.myProp1;}
},
观察:{
myProp1:函数(){alert(“myProp1已更改”)},
myObj:{
处理程序:函数(){alert(“myObj已更改”)},
深:是的
}
}
})
当我测试它时,首先调用了指向该属性的观察者,但是我想确保它不是偶然的,并且依赖于代码中我可能不知道的其他东西


是否只是观察程序在Vue对象的观察程序段中列出的顺序?

观察程序的初始化顺序与Vue对象的初始化顺序相同

组件的观察程序在中初始化,并在调用时调用

watch
对象的属性使用
for in
语句枚举,如您所见:

函数initWatch(vm:组件,watch:对象){
对于(手表中的常量键){//
function initWatch (vm: Component, watch: Object) {
  for (const key in watch) { // <- watch object properties enumerated here
    const handler = watch[key]
    if (Array.isArray(handler)) {
      for (let i = 0; i < handler.length; i++) {
        createWatcher(vm, key, handler[i])
      }
    } else {
      createWatcher(vm, key, handler)
    }
  }