美文网首页
深拷贝的两种方法

深拷贝的两种方法

作者: Ray_afab | 来源:发表于2020-11-27 14:49 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>深拷贝的两种方法</title>
    </head>
    
    <body>
        <script>
            //JSON.stringify 简单粗暴
            var origin_data = { a: 1, b: 2, c: [1, 2, 3] }
            var copy_data = JSON.parse(JSON.stringify(origin_data))
            origin_data.a = 3;
            origin_data.b = 4;
            origin_data.c[0] = '呵呵哒';
            console.log(origin_data)
            console.log(copy_data)
    
            // 递归
            function deepClone(source) {
                const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
                for (let keys in source) { // 遍历目标
                    if (source[keys] && typeof source[keys] === 'object') { // 如果值是对象或者数组,就递归一下
                        targetObj[keys] = deepClone(source[keys]);
                    } else { // 如果不是,就直接赋值
                        targetObj[keys] = source[keys];
                    }
                }
                return targetObj;
            }
            var origin_data = { a: 1, b: 2, c: [1, 2, 3] }
            var copy_data = deepClone(origin_data)
            origin_data.a = 3;
            origin_data.b = 4;
            origin_data.c[0] = '呵呵哒';
    
            console.log(origin_data);
            console.log(copy_data);
    
    
        </script>
    </body>
    
    </html>
    

    相关文章

      网友评论

          本文标题:深拷贝的两种方法

          本文链接:https://www.haomeiwen.com/subject/opyxwktx.html