一、浅拷贝
<!-- 应用场景:复杂数据类型 --> <script> /* 简单的赋值:浅拷贝 */ var arr = [1,2,3,4]; var newArr = arr; newArr.push(5); console.log(arr); </script>
二、深拷贝
2-1.简单数据类型
<!-- 赋值运算的时候只赋值 --> <!-- 赋值运算中 浅拷贝:指向的是堆内存中的同一个对象 深拷贝:指向堆内存中的不同对象 --> <script> var arr = [1,2,3,4]; var newArr = [...arr]; arr.push(5); console.log(newArr); </script>
<script> var arr = [2,3,4,5]; var newArr = arr.slice(0,); newArr.push(6); console.log(arr); </script>
<script> var arr = [2,3,4,5]; var newArr = [].concat(arr); arr.push(6); console.log(newArr); </script>
2-2.复杂数据类型

<script> var arr = [{name:"lisi"},{name:"wangwu"}]; var newArr = JSON.parse(JSON.stringify(arr)); arr[0].name = 'react'; console.log(newArr); </script>
<script> var arr = [{ name: "lisi" }, { name: "wangwu" }]; /* array,object,string,boolean,number */ function deepClone(obj) { if (obj == null || typeof obj !="object") { return obj } let result; if (obj instanceof Array) { result = []; } else { result = {}; } for (let key in obj) { result[key] = deepClone(obj[key]); } return result; } var newArr = deepClone(arr); arr[0].name = 'react' console.log(newArr); </script>