vue响应式修改对象触发视图更新方式
使用Vue.set()或者this.$set(), 另外Object.assign也能实现;
Object.assign()
方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
Object.assign会拷贝原对象自身可枚举的属性到目标对象, 调用原对象的get和目标对象的 set, 而vue的响应式也是靠监听属性的set和get, 所以在合并对象时能触发相应时更新。
js的浅拷贝
Object.assign是用来合并对象属性的,
objB = Object.assign(objA, {attr: 'value'})时,objB和objA指向相同的引用;
objB = Object.assign({},objA, {attr: 'value'})时, 第一层深拷贝, 其他浅拷贝, 见下图: