JS: 关于深拷贝和浅拷贝
2021/9/8 23:10:26
本文主要是介绍JS: 关于深拷贝和浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2021年9月8日
《js高级程序设计》p139中讲解Array.from()方法。该方法是对数组执行浅拷贝,后进行测试。
浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
深拷贝:会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
此处加一句:浅拷贝的对象若包含子对象,当新的对象对子对象发生改变时则会使原对象子对象一同改变,若新的对象只改变第一层的数据,则源对象不会改变。
浅拷贝只是基础类型的拷贝,对于对象和数组只是复制其指针。而深拷贝是和源对象没有任何共享的,一般深拷贝通过循环遍历实现。
1 let a1 = [1, 2, 3, 4, [true, true], { "num": 0, "sum": 1 }]; 2 let a2 = Array.from(a1); 3 console.log(a1 == a2); //false 4 console.log(a1 === a2); //false 5 a1[0] = 0; 6 a1[4][0] = false; 7 a1[5].num = 1; 8 console.log(a1); // [0,2,3,4,[false,true],{num:1,sum:1}] 9 console.log(a2); //[1,2,3,4,[false,true],{num:1,sum:1}] 10 console.log(typeof (a1));//object 11 console.log(typeof (a2));//object 12 console.log(a2 instanceof Array);//true
这篇关于JS: 关于深拷贝和浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程
- 2024-12-20Vue3入门教程:从零开始搭建你的第一个Vue3项目
- 2024-12-20从零开始学习vueRouter4:基础教程
- 2024-12-20Vuex4课程:新手入门到上手实战全攻略