JS保存对象或数组(数据引用)修改前和修改后的数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Alecor/article/details/79851866

在 JS 中有一些基本类型像是Number、String、Boolean,而对象就是像这样的东西{ name: ‘Larry’, skill: ‘Node.js’ },对象跟基本类型最大的不同就在于他们的传值方式。

基本类型是按值传递,像是这样:在修改a时并不会改到b

var a = 25;
var b = a;
b = 18;
console.log(a);//25
console.log(b);//18

对象就不同,对象传的是按引用传值:

ar obj1 = { a: 10, b: 20, c: 30 };
var obj2 = obj1;
obj2.b = 100;
console.log(obj1);
// { a: 10, b: 100, c: 30 } <-- b 被改到了
console.log(obj2);
// { a: 10, b: 100, c: 30 }

//例如我有一个js数组

var preData={12,23,34};  
var curData={};//我自定义一个空对象来进行赋值

下面的方式进行赋值就不会存在修改curData而导致preData也受影响,也就是说随便你curData怎么改变都不会对我原来的preData造成任何影响

 curData=$.extend(true,{},preData);

这里面主要涉及到的深复制和浅复制的引用,下面是我学习时候找到的一些文章,可以深入研究一下
https://www.cnblogs.com/Chen-XiaoJun/p/6217373.html
https://www.zhihu.com/question/23031215
http://jerryzou.com/posts/dive-into-deep-clone-in-javascript/
https://www.cnblogs.com/chenwenhao/p/7009606.html

猜你喜欢

转载自blog.csdn.net/Alecor/article/details/79851866