js对象、数组,改变原数据后新数据也随之改变

js对象、数组,改变原数据后新数据也随之改变

有时候我们可能会有这样的需求,对原数据处理后能有另一份没有改变的原数据。

var a = {'num':1};//原数据
var b = a;//假设我们用b来存储
a.num = 2;//对原数据进行一些改变
console.log(b.num);//2


上面这种方法是达不到我们想要的效果的,因为实际在给b赋值时,是进行了传址操作,也就是说让b跟a指向同一个地址,实际数据只有一份,所以a改变时b也会随之改变。一般的解决方法有深拷贝、转化为字符串。深拷贝可以去我的另一篇JS进阶里面有个extend方法,实际就是循环递归,拷贝一份一模一样的出来,下面简单写一下字符串转化的方法。

var a = {'num':1};
var b = JSON.stringify(a);
a.num = 2;
console.log(JSON.parse(b.num));//1
上面这种方法是达不到我们想要的效果的,因为实际在给b赋值时,是进行了传址操作,也就是说让b跟a指向同一个地址,实际数据只有一份,所以a改变时b也会随之改变。一般的解决方法有深拷贝、转化为字符串。深拷贝可以去我的另一篇JS进阶里面有个extend方法,实际就是循环递归,拷贝一份一模一样的出来,下面简单写一下字符串转化的方法。

猜你喜欢

转载自blog.csdn.net/qq_39771254/article/details/80982967
今日推荐