美文网首页
面向对象(八)继承___ 01 拷贝属性(浅拷贝)

面向对象(八)继承___ 01 拷贝属性(浅拷贝)

作者: 凸小布 | 来源:发表于2017-02-25 16:34 被阅读12次

拷贝属性(浅拷贝)

存在问题:如果属性的值是引用类型的,那么子对象和父对象共享一块儿数据,修改了某一个对象,对另外一个对象有影响

拷贝属性(浅拷贝) 之 方式一for循环拷贝属性
<script>
    /*
       01for循环拷贝属性
           001提供两个对象
           002for循环拷贝属性
           003修改某一个对象
           004打印验证
    */
    var obj1 = {
        name:"hello",
        des:"des",
        friends:["哈哈", "呵呵", "哗啦"]
    };
    var obj2 = {};

    //for循环拷贝属性
    //赋值操作内部细节:是把右边变量(空间中)存储的值复制一份放在左边变量(空间中)
    for(var k in obj1){
        obj2[k] = obj1[k];
    }

    // 修改了某一个对象,对另外一个对象有影响???
    obj2.name = "你好啊";
    obj2.friends.push("共享了");

    console.log(obj1.friends);
    console.log(obj2.friends);

</script>
拷贝属性(浅拷贝) 之 方式二函数Object.assign()来实现 ES6之后才推出
<script>
    /*
        02函数来实现拷贝
            001提供两个或两个以上的对象
            002通过Object.assign(o, obj3);实现属性拷贝
            003修改某一个对象
            004打印验证
      参数:
      第一个参数是目标对象
      第二个,第三个参数是要拷贝属性的对象
    */
    var o = {};
    var obj1 = {name:"name"};
    var obj2 = {age:20};
    var obj3 = {car:{type:"飞船"}};

    Object.assign(o,obj2,obj1,obj3);
    console.log(o);

    obj3.car.type = '汽车';
    console.log(o);
</script>

存在问题:如果属性的值是引用类型的,那么子对象和父对象共享一块儿数据,修改了某一个对象,对另外一个对象有影响


相关文章

  • 面向对象(八)继承___ 01 拷贝属性(浅拷贝)

    拷贝属性(浅拷贝) 存在问题:如果属性的值是引用类型的,那么子对象和父对象共享一块儿数据,修改了某一个对象,对另外...

  • 浅拷贝和深拷贝与(基本复杂类型)数组去重

    对象浅拷贝和深拷贝 //浅拷贝 //深拷贝 所有继承了 Object 的对象都会继承到 hasOwnPropert...

  • JAVA设计模式:原型模式与拷贝

    深拷贝与浅拷贝 浅拷贝:对象A进行赋值操作得到对象B,这就是浅拷贝,修改对象A的属性会影响到B的属性 深拷贝:深拷...

  • 关于继承

    继承的实现方法 属性拷贝 浅拷贝 深拷贝 原型继承 原型式继承 原型链继承 组合继承(深拷贝+优化后的原型式继承)...

  • Java | 对象克隆

    浅拷贝 默认的克隆操作,也就是Object的 clone 方法是浅拷贝,浅拷贝只会拷贝对象属性的值,而不会拷贝对象...

  • js面向对象之 继承

    继承的几种实现方案: 01属性拷贝(浅拷贝) 02原型式继承 03原型链继承 04借用构造函数 05组合继承 06...

  • 深拷贝和浅拷贝

    什么是深拷贝和浅拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的...

  • 面试题:Strong和Copy的区别

    什么是浅拷贝和深拷贝 浅拷贝:并不拷贝对象本身,只是对指向对象的指针进行拷贝,改变原对象的属性会影响新的对象,内存...

  • Java之浅拷贝和深拷贝

    浅拷贝 1.浅拷贝的特点 浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果...

  • 面向对象(八)继承___ 07完全拷贝(直接拷贝原型的成员)

    title: 面向对象(八)继承___ 07完全拷贝(直接拷贝原型的成员)date: # 文章生成时间,一般不改...

网友评论

      本文标题:面向对象(八)继承___ 01 拷贝属性(浅拷贝)

      本文链接:https://www.haomeiwen.com/subject/hwfnwttx.html