练习题4_深度克隆.html 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 arr = [1,2,3,['a','b']];
  11. // // 扩展运算符只能实现浅拷贝
  12. // var arr2 = [...arr];
  13. // arr[0] = "hello";
  14. // arr[3][0] = "world";
  15. // console.log(arr2);
  16. // var arr = [1,2,3,['a','b','c']];
  17. // var arr2 = arr;
  18. // arr[0] = "hello";
  19. // console.log(arr2);
  20. var arr = [1,2,3,['a','b','c']];
  21. var obj1 = {
  22. a:1,
  23. b:2,
  24. c:{
  25. str:"hello",
  26. num:10
  27. }
  28. }
  29. // for(let item in obj){
  30. // console.log(obj[item]);
  31. // }
  32. // var objName = 'a';
  33. // console.log(obj[objName]);
  34. // console.log(typeof arr,typeof obj);
  35. // console.log(Array.isArray(arr));
  36. function deepClone(obj){
  37. var res = null
  38. if(typeof obj == "object"){
  39. if(Array.isArray(obj)){
  40. res = [];
  41. for(let val of obj){
  42. res.push(deepClone(val))
  43. }
  44. }else{
  45. res = {};
  46. for(let val in obj){
  47. res[val] = deepClone(obj[val])
  48. }
  49. }
  50. }else{
  51. res = obj
  52. }
  53. return res
  54. }
  55. var newArr = deepClone(arr);
  56. // arr[0] = "hello";
  57. // arr[3][0] = "world";
  58. // console.log(arr,newArr)
  59. var newObj = deepClone(obj1);
  60. // obj1.a = "hello";
  61. // obj1.c.num = 1000;
  62. // console.log(obj1,newObj)
  63. </script>
  64. </body>
  65. </html>