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

本文详细介绍了jQuery中$.extend方法用于实现浅拷贝和深拷贝的功能。当deep参数设为false时,进行浅拷贝,拷贝过程中如果对象属性名不冲突则会合并。浅拷贝会将复杂数据类型的引用拷贝给目标对象,导致修改目标对象会影响到源对象。而深拷贝(deep设为true)则会创建全新的对象,确保修改目标对象不会影响源对象,即使有重名属性也会覆盖,并且能够处理复杂的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,拷贝对象与被拷贝对象属性名不冲突会合并.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值