浅拷贝与深拷贝不同的实现方法

186 阅读1分钟

递归(面试):

什么是递归函数 : 一个函数在内部调用自己

递归作用和循环类似,也需要有结束条件

function fn(){
            console.log('代码块')
            fn()
        }
​
        fn()

浅拷贝与深拷贝(面试)

浅拷贝: 拷贝地址 , 修改拷贝后的数据原数据也会发生变化

深拷贝: 拷贝数据 , 修改拷贝后的数据原数据不会变化

深拷贝方法:

1.json方法: let obj = JSON.parse( JSON.stringify( 对象 ) )

2.递归方法:

  let obj = {
            name: '张三',
            age: 20,
            sex: '男',
            hobby: ['吃饭', '睡觉', '学习'],
            student: {
                name: "班长",
                score: 90
            }
        }
​
        //使用递归函数
​
        function copy(obj, newObj) {
            for (let key in obj) {
                if (obj[key] instanceof Array) {
                    newObj[key] = []
                    copy(obj[key], newObj[key])
                } else {
                    newObj[key] = obj[key]
                }
            }
        }
        //创建一个空对象,然后深拷贝
​
        let newObj = {}
​
        copy(obj, newObj)
        ​// 修改 拷贝后的数据
        newObj.name = '李四'
        newObj.hobby[1] = '打游戏'
        // 打印结果 ,查看是否拷贝成功
        console.log(obj, newObj)