8.深拷贝.html 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 person = {
  11. // name: 'LiLi',
  12. // age: 10
  13. // }
  14. // function deepClone(obj) {
  15. // var objs = {};
  16. // for(key in obj) {
  17. // objs[key] = obj[key]
  18. // }
  19. // return objs;
  20. // }
  21. // var news = deepClone(person);
  22. // news.name = 'Lucy';
  23. // console.log(news,'news')
  24. // console.log(person,'person')
  25. // for循环
  26. // var arr = [1,2,3,4,5,6];
  27. // for(key in arr) {
  28. // // for in 循环的是数组的下标
  29. // console.log(key,'for..in')
  30. // }
  31. // for(key of arr) {
  32. // // for of 循环的是数组的值
  33. // console.log(key,'for..of')
  34. // }
  35. var news = {
  36. name: '小郑',
  37. age: 10,
  38. main: {
  39. address:'china',
  40. sex: "女"
  41. }
  42. }
  43. function deepClone(obj) {
  44. // 定义一个空对象 用来接收深克隆后的结果
  45. var objs = {};
  46. // for循环传入的对象 循环的是对象下面的每一项
  47. for(key in obj) {
  48. // 判断是否是引用数据类型 注意小写
  49. if(typeof(obj[key]) == 'object') {
  50. // 再次调用深克隆方法
  51. objs[key] = deepClone(obj[key]);
  52. }else {
  53. // 直接复制
  54. objs[key] = obj[key];
  55. }
  56. }
  57. //抛出深克隆后的对象
  58. return objs;
  59. }
  60. var newObjs = deepClone(news);
  61. newObjs.main.address = "111";
  62. console.log(news,'2')
  63. console.log(newObjs,'1')
  64. </script>
  65. </body>
  66. </html>