浅拷贝:复制对象的地址,并没有开辟新的栈,也就是复制的结果是两个对象指向同一个地址,修改其中一个对象的属性,则另一个对象的属性也会改变;
深拷贝: 开辟新的栈,两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
//实现深拷贝的方法
var cloneObj = function(obj){
var str,
newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'){
return;
} else if(window.JSON){
str = JSON.stringify(obj), //系列化对象
newobj = JSON.parse(str); //还原
} else {
for(var i in obj){
newobj[i] = (typeof obj[i]==='object')? cloneObj(obj[i]):obj[i];
}
}
return newobj;
};