两种方式实现浅拷贝 for in实现和Object.assign({}, 对象1, 对象2);

简介: 两种方式实现浅拷贝 for in实现和Object.assign({}, 对象1, 对象2);

浅拷贝只拷贝对象的一层,如果对象的属性还是对象,那么user3和user4这两个对象对应的值都会发生改变


// 拷贝分为浅拷贝和深拷贝。
        // 浅拷贝的实现 通过for in实现
        var user1 = {
            name: "小明",
            age: 30,
            height: 1.9
        };
        var user2 = {};
        for (var i in user1) {
            user2[i] = user1[i]; //user[i]输出的是每一个值,将user1的每一个值赋予给user2对象
        }
        console.log(user2) //{name: "小明", age: 30, height: 1.9}
        // 浅拷贝 通过Object.assign({}, 对象1, 对象2);
        // 这一种浅拷贝方式类似于jquery的$.extend({}, 对象1, 对象2)
        var obj1 = {
            name: "小明",
            age: 13
        };
        var obj2 = {
            name: "大王",
            tel: 18456888
        };
        var obj = Object.assign({}, obj1, obj2);
        console.log(obj) //{name: "大王", age: 13, tel: 18456888}
        // 我们发现这一种方式,相同的key值后一个会覆盖前一个的key值,
        //浅拷贝只拷贝对象的一层,如果对象的属性还是对象,那么user3和user4这两个对象对应的值都会发生改变
        var user3={name:"小明",age:18, deMent:{bumen:"市场部",no:"001"}}
        var user4={};
        for(var i in user3){
            user4[i]=user3[i];
        }
        user4.age=80;   //这个值 不会互相影响改变
        user4.deMent.bumen="策划部"; //这个值 会互相影响改变
        console.log(user3); //输出  {name: "小明", age: 18,deMent:{bumen: "策划部", no: "001"} }
        console.log(user4); //{name: "小明", age: 80,deMent: {bumen: "策划部", no: "001"}}
相关文章
|
7月前
|
Java
java判断Object对象是否为空demo
java判断Object对象是否为空demo
|
9天前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
7 0
|
19天前
|
算法 Java 测试技术
简介Object类+接口实例(深浅拷贝、对象数组排序)
简介Object类+接口实例(深浅拷贝、对象数组排序)
|
20天前
|
存储 算法 Java
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
【5月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
25 2
滚雪球学Java(42):探索对象的奥秘:解析Java中的Object类
|
25天前
|
设计模式 Java API
【设计模式】JAVA Design Patterns——Active Object(活动对象设计模式)
【设计模式】JAVA Design Patterns——Active Object(活动对象设计模式)
|
1月前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
7月前
判断Object对象是否为空
判断Object对象是否为空
|
1月前
|
存储 设计模式 Python
Python中的类(Class)和对象(Object)
Python中的类(Class)和对象(Object)
43 0
|
1月前
|
存储 JavaScript
JS中Map对象与object的区别
JS中Map对象与object的区别
|
1月前
|
Java 流计算
在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
【2月更文挑战第6天】在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
30 3