问题:最近做项目的时候遇到一个对象赋值问题,输出整个对象和直接输出对象的某个属性,结果竟然是不一样的,当时觉得也是有点神奇,附上代码和输出情况
因为在waterAndRainForm表单没有elementCode这个字段,所以就先把选中的checkCode赋值给waterAndRainForm表单。
发现直接输出this.waterAndRainForm.elementCode的时候,输出的是cba,没点开this.waterAndRainForm对象的详细信息的时候显示的也是cba,但是一点开看到的却是823。
请教了同事后,说可能是对象的深拷贝问题,试了一下,确实可以了
深拷贝方法:使用JSON.stringify()以及JSON.parse()
let _tmp = JSON.stringify(obj);//将对象转换为json字符串形式
let result = JSON.parse(_tmp);//将转换而来的字符串转换为原生js对象
var objString = JSON.stringify(this.waterAndRainForm);
this.comfirmForm = JSON.parse(objString);
虽然问题解决了,但我还不了解原因是啥,特别是点开后看到的结果跟折叠时看到的结果不一样,这是真的有点迷惑,有知道的小伙伴可以评论区告诉我