博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅拷贝和深拷贝
阅读量:6305 次
发布时间:2019-06-22

本文共 1242 字,大约阅读时间需要 4 分钟。

//浅拷贝 var obj1={
age:10, sex:"男", car:["奥迪","宝马","奔驰","玛莎拉蒂"] }; //另一个对象 var obj2={}; //写一个函数,作用:把一个对象的属性复制到另一个对象中,浅拷贝 //把a对象中的所有的属性复制到对象b中 function extend(a,b) {
for(var key in a){
b[key]=a[key]; } } extend(obj1,obj2); console.dir(obj2);//开始的时候这个对象是空对象 console.dir(obj1);//有属性
//深拷贝 var obj1={
age:10, sex:"男", car:["奥迪","宝马","奔驰","玛莎拉蒂"], dog:{
name:"大黄", age:5, color:"灰白色" } }; var obj2={}; //通过函数实现,把对象a中所有的数据深拷贝到对象b中 function extend(a,b) {
for(var key in a){
//先获取a对象中的每个属性值 var item=a[key]; //判断这个属性值是不是数组 if(item instanceof Array){
//如果是数组,那么在b对象中添加一个新的属性,并且这个属性也是数组 b[key]=[]; //调用这个方法,把a对象中这个数组的属性值一个一个的复制到b对象这个数组的属性中 extend(item,b[key]); }else if(item instanceof Object){//判断这个值是不是对象类型的 //如果是对象类型的,那么在b对象中添加一个属性,是个空对象 b[key]={}; //再次调用这个函数,把a对象中的属性对象的值一个一个的复制到b对象的这个属性对象中 extend(item,b[key]); }else {
//如果值是普通的数据,直接复制到b对象的这个属性中 b[key]=item; } } } extend(obj1,obj2); console.dir(obj1); console.dir(obj2);

转载于:https://www.cnblogs.com/lujieting/p/10082490.html

你可能感兴趣的文章
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
DHCP
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>