Javascript 在Vue中,将首先调用哪个观察者?一个物体上的深表,还是该物体的财产上的表?
如果我有以下Vue对象,并且myObj.myProp1已更改,那么将首先调用哪个观察程序?什么决定了订单?有没有办法操纵订单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已更改”)}, 深:是的 } } })
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)
}
}