深拷贝与浅拷贝
2021/9/27 23:14:54
本文主要是介绍深拷贝与浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
拷贝不要用于对象
浅拷贝:拷贝的是内存地址,不管修改拷贝前或者拷贝后,两者都会改变。
深拷贝:新创建一个对象,使用循环,把拷贝前的每一项拷贝给新对象,不管修改拷贝前或者拷贝后,两者都不会受影响。
// 基本类型: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);
这篇关于深拷贝与浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-30我的第一个Go命令行工具
- 2024-09-30初学者指南:轻松掌握模块化编程
- 2024-09-30顶级5款免费的IntelliJ插件,助你Java开发之路更顺畅
- 2024-09-30提高应用程序可用性:冗余和持久性
- 2024-09-30Twitter 系统设计面试示例
- 2024-09-30JSON对象入门教程:轻松掌握基础用法
- 2024-09-30封装入门:Java面向对象编程的第一步
- 2024-09-30后台交互入门:轻松掌握基础知识与实践技巧
- 2024-09-30轻松入门:后台交互教程详解
- 2024-09-30后台交互项目实战:新手指南