4 jQuery 的其他方法

基础语法

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

//1. deep:true是深拷贝 默认false 浅拷贝
//2. target  要拷贝的目标对象
//3. object1 待拷贝的 第一个对象
//4. objectN 待拷贝的 第N个对象

 

一  深拷贝

//深度拷贝:完全克隆 是两个不同的对象 彼此修改不会影响
<script>
    var targetObj = {};
    var obj = {
        id:1,
        msg: {
            success:1,
            error: 0
        }
    };
    $.extend(true,targetObj,obj);
    targetObj.msg.success = 2;//修改目标对象的success属性值
    console.log(obj);//被拷贝对象的success值没有被修改 [ 因为他们是两个不同的对象 ]
</script>

二 浅拷贝

<script>
    var targetObj = {};
    var obj = {
        id:1,
        msg: {
            success:1,
            error: 0
        }
    };
    $.extend(targetObj,obj);
    targetObj.msg.success = 2;//修改目标元素的 success 属性值
    console.log(obj);//影响到了被拷贝对象的 success 属性的值
</script> 
 4 jQuery 的其他方法

 

 

 

 

 

 

 

 

//1 浅拷贝:被拷贝对象如果包含复杂数据类型 它是把 复杂数据类型的内存地址 拷贝给了目标对象
目标对象修改复杂数据类型的值 会影响到 被拷贝对象

 

浅拷贝场景1)拷贝对象和目标对象有相同的属性

var targetObj = {
    id:1,
    name:'李白'
};
var obj = {
    id:2,
    name:'杜甫'
};
$.extend(targetObj,obj);
console.log(targetObj);// {id: 2, name: "杜甫"}

// 如果有相同的属性 被拷贝对象的属性值 会 覆盖 目标对象的属性值

浅拷贝场景2)被拷贝的对象包含复杂数据类型

<script>
    var targetObj = {};
    var obj = {
        id:1,
        name:'李白',
        meg: {
            error: 0
        }
    };
    $.extend(targetObj,obj);
    console.log(targetObj);
</script>
//是把 被拷贝对象 复杂数据类型 的内存地址 给了目标对象
//他们任何一个修改的都是一个对象

  

代码范例

<script>
    var targetObj = {};
    var obj = {
        id:1,
        name:'李白',
        msg: {
            error: 0
        }
    };
    $.extend(targetObj,obj);
    targetObj.msg.error = 1;//修改目标元素的error属性值
    console.log(obj);//影响到了obj对象的error属性值
</script>
  4 jQuery 的其他方法打印obj对象
上一篇:微信小程序 editor富文本


下一篇:jQuery ajax() success, error VS .done(), .fail()