//浅拷贝
var stu1={};
stu1.name=stu.name;
stu1.age=stu.age;
stu1.hobby=stu.hobby;
stu1.score=stu.score;
//浅拷贝后,如果属性值为对象的时候,只要修改一个,其余对象对应数据都会改变
stu.hobby[0]="弹吉他";//stu和stu1的hobby:["弹吉他",'跳舞']
快速实现浅拷贝
var stu2={};
for(var i in stu){
stu2=stu;
}
深拷贝:如果对象的属性值为基本数据类型,直接拷贝。如果对象属性对应的值对象,需要解析对象,再去拷贝
// 快速实现深拷贝(函数递归调用)
function deepCopy(obj){
//先判断obj是数组还是对象
if(obj instanceof Array){
var newobj=[];
}else if(obj instanceof Object){
var newobj={};
}
//遍历obj
for(var i in obj){
//如果当前遍历的属性的是对象
if(obj instanceof Object){
//将当前属性作为参数再次调用deepCopy
newobj=deepCopy(obj);//递归
}else{
//如果是基本数据类型直接赋值
newobj=obj;
}
}
//返回深拷贝出的新对象
return newobj;
}