问题:
在vue项目中,往往我们会如下使用:
let a = 3;
let b = null;
b =a;
我的目的其实仅仅是将a拷贝到b,但是当我对b或者a的值变动了后,会直接影响对方的值跟着变换,这不是我要的效果。
原因:
其实对应java里的对象拷贝的深拷贝和浅拷贝的概念,也就是说,上面的写法,仅仅是一种对象的先拷贝,说的直白点,a和b这个时候都指向同一个地方,那么无论改变哪个,其实本质都是改变同一个地方的值,那么作为引用,值当然也就变了。
处理办法:
1、ES6
let goods = {...}
let curGoods = Object.assign({},goods);
2、JSON转换
let goods = {...}
let curGoods = JSON.parse(JSON.stringify(goods));