一、简单数据类型
- 浅拷贝:newArr = arr
- // 简单的赋值
-         var arr = [1,2,3,4];
-         var newArr = arr;
-         newArr.push(5)
-         console.log(arr);//[1,2,3,4,5]
- 深拷贝:newArr
- <script>
-         // 浅拷贝:指向的是堆内存的通风一个对象
-          //深拷贝:指向堆内存的不同对象
-      1、扩展
-         var arr = [1,2,3,4];
-         var newArr = [...arr];
-         newArr.push(5)
-         console.log(arr);//[1,2,3,4]
-     2、slice
-          var arr = [1,2,3,4];
-          var newArr = arr.slice(0,);
-          arr.push(5)
-          console.log(arr);//[1,2,3,4]
-     3、concat
-         var arr = [1,2,3,4]
-         var newArr = [].concat(arr)
-         newArr.push(5);
-         console.log(arr);//[1,2,3,4]
- </script>
二、复杂数据类型

- //浅拷贝
- <script>
-         var arr = [{name:"lisi"},{name:"wangwu"}]
-         var newArr = [...arr]
-         arr[0].name = "react";
-         console.log(arr);
-     </script>
JSON.parse JSON.stringify实现
- //深拷贝 JSON.parse JSON.stringify
- <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"}];
-         function deepClone(obj){
-             //如果是初始值 直接返回
-             let result;
-             if(obj instanceof Array){
-                  result = []
-             }else if(typeof obj =="object"){
-                 result = {}
-             }else{
-                 return obj
-             }
-             for(let key in obj){
-                 result[key] = deepClone(obj[key])
-             }
-             return result
-         }
-         var newArr = deepClone(arr)
-         arr[0].name = "react"
-         console.log(newArr);
-     </script>