jquery学习第三天---jquery的浅拷贝与深拷贝

jquery的浅拷贝与深拷贝

$.extend([deep], target, object1, [objectN])

  1. deep: 如果设为true 为深拷贝, 默认为false 浅拷贝
  2. target: 要拷贝的目标对象
  3. object1:待拷贝到第一个对象的对象。
  4. objectN:待拷贝到第N个对象的对象。

浅拷贝

拷贝对象与被拷贝对象属性名不冲突会合并,

    <script>
        var target={
            name:"yang",
            age:18,
            msg:{
                sex:1
            }
        }
        var targetnew={
            old:"no"
        };
        $.extend(targetnew,target);
        console.log(targetnew);
    </script>

输出:
在这里插入图片描述

浅拷贝的特性: 浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象

我们改一下上面的代码:

    <script>
        var target={
            name:"yang",
            age:18,
            msg:{
                sex:1
            }
        }
        var targetnew={
            old:"no"
        };
        $.extend(targetnew,target);
        console.log(targetnew);
        target.msg.sex=2;
        console.log(targetnew);
        console.log(target);
    </script>

输出:
在这里插入图片描述
我们可以看出全部sex全部改成了2:

并且如果要拷贝的对象有与拷贝对象重名的属性,会被覆盖:

     var target={
            name:"yang",
            age:18,
            msg:{
                sex:1
            }
        }
        var targetnew={
            age:11
        };
        $.extend(targetnew,target);
        console.log(targetnew);

输出在这里插入图片描述

深拷贝

1,并且如果要拷贝的对象有与拷贝对象重名的属性,会被覆盖(和浅拷贝一样):
2,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象
3,拷贝对象与被拷贝对象属性名不冲突会合并.


版权声明:本文为weixin_44638167原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。