因为普通监听对象时,其实监听的该对象存放的堆地址,只有声明关键子字(deep: true)才能监听整个对象中所有属性变化;
当然如果监听的对象只有一两个属性,也可以直接分别监听其属性;
//声明对象 data() { return { obj: { name: '黄国华' } } }, watch: { obj: { handler: function(newVal, oldVal) { console.log(newVal, oldVal); //因为对象为引用类型数据,所以新旧值其实是同一个,没有差异 }, deep: true, //关键字,只有声明deep: true才能监听到整个对象的变化 immediate: true //关键字, 此关键字声明为true时,监听对象的初始化就会触发监听事件 } }, //验证一下 mounted() { this.obj.name = '你变了o(╥﹏╥)o'; }