浅拷贝

    1. let obj1 = {
    2. name: 'zs',
    3. age: 20,
    4. height: 180
    5. }
    6. let obj2 = {}
    7. // 循环遍历 obj1,循环一次,将一个属性拷贝到 obj2 里面
    8. for (let key in obj1) {
    9. // key 表示对象的属性
    10. // console.log(key) // name age height
    11. // console.log(obj1[key]) // zs 20 180
    12. obj2[key] = obj1[key]
    13. }
    14. obj2.height = 200
    15. console.log(obj1)
    16. console.log(obj2)

    深拷贝

    1. let obj1 = {
    2. name: 'zs',
    3. age: 20,
    4. info: [180, 80],
    5. dog: {
    6. color: 'black',
    7. age: 3
    8. }
    9. }
    10. let obj2 = {}
    11. // 规律:深拷贝 相当于是 很多个浅拷贝
    12. // 我写一个函数,功能是实现浅拷贝,当我们需要浅拷贝的时候,就调用这个函数
    13. function kaobei(obj1, obj2) {
    14. for (let key in obj1) {
    15. if (obj1[key] instanceof Array) {
    16. obj2[key] = []
    17. kaobei(obj1[key], obj2[key])
    18. } else if (obj1[key] instanceof Object) {
    19. obj2[key] = {}
    20. kaobei(obj1[key], obj2[key])
    21. } else {
    22. obj2[key] = obj1[key]
    23. }
    24. }
    25. }
    26. kaobei(obj1, obj2)
    27. obj1.dog.color = 'red'
    28. console.log(obj1)
    29. console.log(obj2)