环境复现
在使用vue和element开发表单时,创建新对象b=原始数据a,修改b对象中的参数会导致a也被同步修改,导致页面参数有问题,具体例子如下:
var a = {'a':11,'b':22};
var b = a;
b['a']= 33;
console.log('a',a);
console.log('b',b);
结果如下:修改b的时候,a也被影响了,同步被修改了,这也就是导致为什么页面上的元素也会影响的原因。
解决办法
使用Object.assign(target, …sources) 方法,详细可以点击查看
var a = {'a':11,'b':22};
var c = Object.assign({}, a)
c['b'] = 55;
console.log('a',a);
console.log('c',c);
结果如下:在修改c的时候,a并未被修改,二者仅仅是值相等关系,但是设计内部再引用其他对象的修改,此方法也无法保证修改c对a无影响。