使用场景
vue中,如果我们需要对vue里面的data数据重置,一个一个数据重置非常麻烦,那么一个更为简单高效的写法如下:
Object.assign(this.$data, this.$options.data())
解读:
Object.assign(target,...source)
是es6新增的方法,可以合并对象,用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象,target:目标对象,source:源对象,通过Object.assign方法,把source合并给target,如果目标对象中的属性名与源对象中的属性名相同时,则属性将被源对象中的属性覆盖,然后返回target对象;
this组件实例,通过this可以获取实例上的data属性;
this.$data,
是所有响应式数据,this.$data可以操作所有的响应式数据,data被放置在vm上,经过代理,实现响应式数据;
this.$options
,当前组件的配置对象,包括data,methods等,this.$options.data就是组件的初始值(vue里面的data);
通过Object.assign把vue的初始化数据对象data,合并到响应式数据this.$data上,即可实现vue对象下面的所有data响应式数据的重置