$.extend()的深拷贝和浅拷贝

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21132509/article/details/79973892

语法:jQuery.extend( [deep ], target, object1 [, objectN ] )

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

deep默认为false是浅拷贝,为true是深拷贝。深拷贝会在对象上进行递归合并。

浅拷贝(false 默认):如果第二个参数对象有的属性第一个参数对象也有,那么不会进行相同参数内部的比较,直接将第一个对象的相同参数覆盖。

深拷贝(true):如果第二个参数对象有的属性第一个参数对象也有,还要继续在这个相同的参数向下一层找,比较相同参数的对象中是否还有不一样的属性,如果有,将其继承到第一个对象,如果没有,则覆盖。

var object1 = {  
    apple: 0,  
    banana: {  
        weight: 52,  
        price: 100  
    },  
    cherry: 97  
};  
var object2 = {  
    banana: {  
        price: 200  
    },  
    durian: 100  
};  
  
//默认情况浅拷贝  
//object1--->{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}  
//object2的banner覆盖了object1的banner,但是weight属性未被继承  
//$.extend(object1, object2);  
  
//深拷贝  
//object1--->{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}  
//object2的banner覆盖了object1的banner,但是weight属性也被继承了呦  
$.extend(true,object1, object2);  
  
console.log('object1--->'+JSON.stringify(object1));  

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页