
深拷贝,浅拷贝
发布日期: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♪(・ω・)ノ发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月20日 01时21分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
统计字符数
2019-03-04
Vue Element UI Upload 上传多张图片
2019-03-04
JS数据类型的判断
2019-03-04
实现一个简易Vue(三)Compiler
2019-03-04
仿小米商城(上)
2019-03-04
仿小米商城(下)
2019-03-04
【30】kotlin 闭包
2019-03-04
文件md5怎么会变化
2019-03-04
好玩的editText
2019-03-04
自动安装服务2
2019-03-04
android 用action拦截打电话界面
2019-03-04
错误: 编码GBK的不可映射字符
2019-03-04
Python-Url编码和解码
2019-03-04
2019年一个程序员的回顾与成长计划
2019-03-04
vue 双项绑定的实例 货币转换
2019-03-04
vue if else用法。
2019-03-04