对象深拷贝和浅拷贝的区别:深拷贝就是像基础数据类型的复制一样,完全复制一个值,两个变量互不影响,浅拷贝就是引用数据类型的复制,只是复制了同一个空间地址,一个对象的改变也会影响另一个对象
但在实际运用中,有时候也需要引用数据类型深拷贝,两个对象不相互影响
解决方法1:创建一个同类型的空数据类型,将对象内的元素一一复制到空对象,现在就实现了内容一样且互不影响,但是对象内元素太多会很麻烦
var arr1 = [1, 2];
var arr2 = [];
arr2[0] = arr1[0];
arr2[1] = arr1[1];
arr2[0] = 3;
console.log(arr1, arr2); //(2) [1, 2] (2) [3, 2]
解决方法2:利用JSON
如果内部没有引用数据或者时间正则null等等数据时
<script>
var obj = { name: "karen" };
var str = JSON.stringify(obj); //解析为字符串
var obj2 = JSON.parse(str); //转为对象
console.log(obj, obj2, obj == obj2); //{name: 'karen'} {name: 'karen'} false
</script>