深拷贝与浅拷贝
拷贝不要用于对象
浅拷贝:拷贝的是内存地址,不管修改拷贝前或者拷贝后,两者都会改变。
深拷贝:新创建一个对象,使用循环,把拷贝前的每一项拷贝给新对象,不管修改拷贝前或者拷贝后,两者都不会受影响。
// 基本类型:String Number Boolean null undefined symbol // 引用类型: Object(Array function(但函数不可用) Data) // 深拷贝和浅拷贝适用于引用类型 // 基本类型是存储在栈内存中,引用类型是存储在堆内存中(栈内存中存储的是堆内存中的引用地址) //浅拷贝 引用类型拷贝的内存地址,只拷贝是一层, let a = [1, 2, 3] let b = a; a[0] = 4; console.log(b); // 深拷贝 拷贝所有 深拷贝是新创建一个对象 把需要拷贝的对象中的每一项 拷贝一份 给新对象 var obj = { name: "rql" } var obj2 = {}; for (let i in obj) { obj2[i] = obj[i]; } obj.name = "rqy"; console.log(obj); console.log(obj2); console.log(obj2.name); // json格式也是对象 var p = { "id": "007", "name": "刘德华", "books": new Array('三国演义', '水浒传', '西游记') } var p2 = {} for (var key in p) { if (typeof p[key] == 'object') { //判断是否是引用类型 p2[key] = []; //创建一个新数组,来存储拷贝的数据 for (var i in p[key]) { p2[key][i] = p[key][i]; } } else { p2[key] = p[key] } } p.id = "008"; p2.books[0] = "四国"; console.log(p); console.log(p2);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~