js将原对象的值赋值给新对象,改变原对象的值后新对象的值也会改变

前端遇见的问题:

在页面加载时将后端返回的值赋值给一个对象1,再创建一个对象2,将对象1的值赋值给对象2,但是当对象1的值改变时对象2的值也跟着改变

//后端返回的data
this.form1=data
this.form2=data
//改变form1的值后  form2的值也会改变
//详细点
//原来  this.form1.name=张三
//现在  this.form1.name=李四
//按照我写的目的来说
//是希望    this.form1.name=李四
//          this.form2.name=张三
//但是当我对form1的name进行改变时
//出现了    this.form1.name=李四
//          this.form2.name=李四
//form2的值也改变了
//通过前端同学的讲解
//这个的原理是  深拷贝和浅拷贝
//大致意思是:  并不是form1和form2的值相等   只是form1和form2的对象的地址相同
//详细可以自行百度
//
//
//出现这种问题的解决办法
//前端同学告诉我  1.可以for循环取出form1的值加入form2
//                2.转换成新对象   我是用下方的方式写的
                this.form2=JSON.parse(JSON.stringify(data));
//                然后form1的值进行改变  form2的值就不会改变了    

猜你喜欢

转载自blog.csdn.net/weixin_47035997/article/details/127581576