JavaScript浅复制和深复制的区别
来源:互联网 发布:steam更新网络连接 编辑:程序博客网 时间:2024/04/28 13:05
理解JavaScript浅复制和深复制之前,我们需要先了解js的数据类型:基本数据类型和引用类型。
基本数据类型:undifined, null, Number, String ,Boolean,这一些是存放在栈stack中的。
引用数据类型:Object, Array等,这一些事存放在堆heap中的。
1.浅复制
看如下代码:
var myObj1={ name:"Scott"};var myObj2=myObj1;
这一种方式就是浅复制,这样做的问题是,myObj1是一个引用类型的对象,我们将myObj1直接赋值给myObj2的话,只是将引用赋值给了myObj2,这样myObj2和myObj1都指向相同的内存地址。这样的话,如果我们重新给myObj2赋值的话,myObj1的值也会改变。
myObj2.name="123";console.log(myObj1.name); //结果:123
2.深复制
但我们开发过程中,可能并不想让myObj2和myObj1有这种联系,这个时候就需要深复制了。那么如何进行深复制呢?
i).最简单的办法:
var myObj1={ name:"Scott"};var myObj2={};myObj2.name=myObj1.name;因为String类型是基本数据类型,这样做的话,改变myObj2的值,并不会影响myObj1。但如果对象很复杂的话,这一种方式将非常麻烦。
ii).JSON.parse和JSON.stringify()
var myObj1={ name:"Scott" }var myObj2=JSON.parse(JSON.stringify(myObj1));
iii).其他方式
一些js库都提供了相关功能,比如Jquery的$.extend()
var myObj1={ name:"Scott"};var myObj2=$.extend(true,{},myObj1);
0 0
- JavaScript浅复制和深复制的区别
- 浅复制和深复制的区别?
- 浅复制和深复制的区别?
- 浅复制和深复制的区别
- 浅复制和深复制的区别
- javascript中的浅复制和深复制
- JavaScript中的深复制和浅复制
- ES6(JavaScript)的深复制和浅复制
- java深复制和浅复制的区别
- C++深复制和浅复制的区别
- js数组深复制和浅复制的区别
- 浅复制与深复制的区别
- 深复制与浅复制的区别
- 数组的浅复制和深复制
- python的深复制和浅复制
- 对象的深复制和浅复制
- 深复制和浅复制的概念
- java的深复制和浅复制
- HTML中的meta标签
- 设计模式六大原则(3):依赖倒置原则
- libevent入门
- Xcode8如何创建 .a 静态SDK库
- 区块链中Blockchain
- JavaScript浅复制和深复制的区别
- ffmpeg常用基本命令
- SAS随机抽样以及程序初始环境
- Unity 光照系统 分图层显示
- base64编码 【转】
- Redis集群方案及实现
- String对象的创建与比较
- Py第十一问 PyCharm配置SFTP远程调试Django应用
- 欢迎使用CSDN-markdown编辑器