在看Vue官网教程,对于添加多个属性,有下面建议:
=====分割线===================
如果你想添加新的响应式属性,不要像这样:
Object.assign(vm.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})
你应该这样做:
vm.userProfile = Object.assign({}, vm.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})
=======分割线================
两种写法有区别?怎么样都会破坏了vm.userProfile啊
有个不一样的地方就是如果vm.userProfile为undefined,那么第一种情况下就会报错。
还有就是两种情况虽然都是改变了vm.userProfile,但是你可以理解为,第一种是将{age: 27, favoriteColor: 'Vue Green'}遍历一遍后添加到vm.userProfile上面,并没有改变原来的vm.userProfile指向的地址,第二种是将vm.userProfile和{age: 27,favoriteColor: 'Vue Green'}遍历后添加到这个新的{}上面,vm.userProfile实际上指向了一个新的地址。
最简单的比较就是这样:
因为我没用过vue,所以也不知道vue里面是出于什么样的考量才这样做。但如果是在react中,前后两个vm.userProfile不一样,这样是可以通过比较出两者的不同,然后重新渲染组件的。