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

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

//浅拷贝var o1 = { a: 10, b: 20, c: 30 };var o2 = o1;o2.a = 100;console.log(o1);//深拷贝var o1 = { a: 10, b: 20, c: 30 };var o2 = { a: o1.a, b: o1.b, c: o1.c };o2.a = 100;console.log(o1);//深拷贝 只适用于一维数组var o1 = { a: 10, b: 20, c: 30 };var o2 = { ...o1 };o2.a = 100;console.log(o1);//简单深拷贝,将对象转成json字符串再转回来var o1 = { a: { d: 40 }, b: 20, c: 30 };var o2 = JSON.parse(JSON.stringify(o1));o2.a.d = 100;console.log(o1);//多维数组var o1 = { a: { d: 40 }, b: 20, c: 30 };var o2 = { ...o1 };o2.a.d = 88;console.log(o1);//Object.assign 能够实现一层深拷贝var o1 = {    name: "Gucci",    age: 13,    gender: "female",    hobby: {        a: 'Chinese',        b: 'Math',        c: 'English'    }};var o2 = Object.assign({}, o1);o2.hobby.a = "Math";o1.age = 1000;console.log(o1);//终极大杀器 递归复制实现深拷贝//注意typeof []结果为objecttypeof []"object"typeof {}"object"typeof "111""string"typeof null"object"function deepClone(obj){    let objClone = Array.isArray(obj)?[]:{};    if(obj && typeof obj==="object"){        for(key in obj){            if(obj.hasOwnProperty(key)){                //判断ojb子元素是否为对象,如果是,递归复制                if(obj[key]&&typeof obj[key] ==="object"){                    objClone[key] = deepClone(obj[key]);                }else{                    //如果不是,简单复制                    objClone[key] = obj[key];                }            }        }    }    return objClone;}    let a=[1,2,3,4],    b=deepClone(a);a[0]=2;console.log(a,b);

  

//运算结果按顺序打印{ a: 100, b: 20, c: 30 }{ a: 10, b: 20, c: 30 }{ a: 10, b: 20, c: 30 }{ a: { d: 40 }, b: 20, c: 30 }{ a: { d: 88 }, b: 20, c: 30 }{ name: 'Gucci',  age: 1000,  gender: 'female',  hobby: { a: 'Math', b: 'Math', c: 'English' } }[ 2, 2, 3, 4 ] [ 1, 2, 3, 4 ]

  

转载于:https://www.cnblogs.com/ft039x/p/9986285.html

你可能感兴趣的文章
CentOS yum 源的配置与使用
查看>>
oracle体系结构-内存管理
查看>>
LINUX相关的镜像源网站大全,个人收集完整版!
查看>>
JPA的Column注解总结
查看>>
Could not obtain transaction-synchronized Session
查看>>
我的友情链接
查看>>
MySQL基本语句——增、删、查、改
查看>>
elasticsearch外网访问
查看>>
logstash
查看>>
我的友情链接
查看>>
ViewStub must have a valid layoutResource
查看>>
Mysql安装及入门
查看>>
KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)
查看>>
网络营销之CPA、CPS、CPM、CPT、CPC 是什么
查看>>
RESTful API
查看>>
Linux用户权限管理
查看>>
《高效程序员的45个习惯》读后感
查看>>
ehcache配置
查看>>
关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)
查看>>
我的友情链接
查看>>