练习题7_深拷贝.html 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. var obj = {
  11. name: 'zhangsan',
  12. age: 18,
  13. sex: '男',
  14. friend:{
  15. name: 'lisi',
  16. age: 19
  17. }
  18. }
  19. var arr = [1,2,3,4,5,[6,7,8,9]];
  20. // 深拷贝
  21. function deepClone(obj){
  22. var res = null;
  23. // 判断obj是不是对象或者是数组
  24. if(typeof obj == 'object'){
  25. if(Array.isArray(obj)){
  26. res = [];
  27. // 遍历数组
  28. for(let item of obj){
  29. res.push(deepClone(item));
  30. }
  31. }else{
  32. res = {};
  33. // 遍历对象
  34. for(let key in obj){
  35. res[key] = deepClone(obj[key]);
  36. }
  37. }
  38. }else{
  39. res = obj;
  40. }
  41. return res;
  42. }
  43. // var arr2 = deepClone(arr);
  44. // arr[0] = "hello";
  45. // arr[5][0] = "world";
  46. // console.log(arr2);
  47. var obj2 = deepClone(obj);
  48. obj.age = 20;
  49. obj.friend.age = 20;
  50. console.log(obj2);
  51. </script>
  52. </body>
  53. </html>