深拷贝,浅拷贝
发布日期:2021-05-07 10:55:38 浏览次数:26 分类:技术文章

本文共 1600 字,大约阅读时间需要 5 分钟。

关于拷贝

顾名思义’拷贝’也就是Copy,意思就是将A中的内容复制到了B
在我们学习中遇到的:
浅拷贝 :当我们在修改B里面的内容的时候,A中的内容也跟着会改变,也就是所谓的添加了一个指针指向的是A的内存地址
深拷贝:当我们在修改B里面的内容的时候, A中的内容并没有发生改变,这是因为在复制的过程中开辟一个新的空间,将A中的内容存放到B这个新的空间中

关于浅拷贝

撒代码啦…

var array = [1, 2, 3, 4];function copy(array) {    let newArray = []    for (let item of array) {        newArray.push(item);    }    return newArray;}var copyArray = copy(array);copyArray[1] = 100;console.log(array); // [1, 2, 3, 4]console.log(copyArray); // [100, 2, 3, 4]

关于深拷贝

深拷贝:层层拷贝,从内到外都要进行对其以一次copy,防止在之后的数据的引用修改中出现影响原始数据这种情况
上代码,看官请仔细揣摩…

const obj1 = {        age: 20,        name: 'xxx',        address: {            city: 'beijing'        },        arr: ['a', 'b', 'c'],        name2: null    };    // 不确定传参的类型    function deepClone(obj) {        if (typeof obj !== 'object' || obj == null) {            // obj 是 null ,或者不是对象和数组,直接返回            return obj        }        // 初始化返回结果        let result;        if (obj instanceof Array) { /            result = []        } else {            result = {}        }        for (let key in obj) {            // 保证 key 不是原型的属性            if (obj.hasOwnProperty(key)) { //true                result[key] = deepClone(obj[key]) // 递归            }        }        // 返回结果        return result    }    var copy = deepClone(obj1)    copy.age = '深拷贝'    console.log(copy);    console.log(deepClone(obj1));
在上述深拷贝中引用到了递归,所谓递归,我理解的就是自己调用自己,在不满足条件的情况下,进行调用,当满足条件后,通过return将函数返回出去。    在递归中必须要有一个返回条件,否则将形成死循环!
function factorial(num){     if (num <= 1){          return 1;     } else {         return num * factorial(num-1);     } }

各位看官,初次发文,欢迎指正…

点赞o!!!Thanks♪(・ω・)ノ

上一篇:一个简单的shell脚本:weblogic日志按天生成(日志压缩)
下一篇:一个简单的shell脚本:一键部署tomcat及发布简单程序脚本

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月20日 01时21分59秒