浅拷贝和深拷贝的区别
简言之, 浅拷贝只复制一层对象的属性,而深拷贝则递归复制了所有层级。
深入的讲,就是:
浅拷贝只会拷贝第一层的属性,会删除第一层的子属性;
深拷贝会拷贝第二层、第n层的属性,并且替换已有属性,只新增和替换,不删除。
jQuery的拷贝区别
浅拷贝:$.extend(obj1,obj2,...) 或者 $.extend({}, obj1, obj2)
深拷贝:$.extend({}, obj1,obj2,...)
var object1 = {
origin: 0,
yellow: { weight: 52, price: 100, man: {
age: 12,
name: "bill"
} },
blue: 97
};
var object2 = {
yellow: {
price: 200,
man: {
age: 88,
name: "Lily",
sex: "girl"
}
},
grey: 100
};
//$.extend({}, object1, object2); 和 $.extend(object1, object2);是浅拷贝,返回的结果一样
// $.extend( true, object1, object2 ); //深拷贝
/**
* 浅拷贝的结果
{
origin: 0,
yellow: {
price: 200,
man: {
age: 88,
name: "Lily",
sex: "girl"
}
},
blue: 97,
grey: 100
}
*/
/**
* 深拷贝的结果
{
origin: 0,
yellow: {
price: 200,
weight: 52,
man: {
age: 88,
name: "Lily",
sex: "girl"
}
},
blue: 97,
grey: 100
}
*/
js深拷贝,和jquery的一样,可以参考其他文章。