浅拷贝依次遍历内容,依次赋值
var p={
name:"zhuyu",
age:20
};
var k={
};
console.log(p);
console.log(k);
for(let key in p){
k[key]=p[key];
}
console.log(p);
console.log(k);
使用Object.assign()方法。
<script>
//方法二:使用Object原型方法
var p={
name:"zhuyu",
age:20
};
var k={
weight:"120",
height:175
};
console.log("方法二打印---------------------")
Object.assign(k,p);
console.log(p);
console.log(k);
</script>
问题来,你这样依次拷贝出现的问题就是对象里面含有对象或者数组,Date等属性,又会出现只拷贝地址的情况,解决方法只有采用递归的方式拷贝。
<script>
var p={
name:"朱宇",
age:20,
body:["weight","height"],
ass:{
qiguan:["haha","xixi"],
success:["ads","dad"]
}
};
var stu={
}
//封装深拷贝函数
function copy(fa,fb){
for(let key in fb){
if(!isObject(fb[key])){
fa[key]=fb[key];
}else{
let tempb=fb[key];
let tempa=new fb[key].constructor;
copy(tempa,tempb);
fa[key]=fb[key]
}
}
}
function isObject(obj){
return obj instanceof Object
}
copy(stu,p);
console.log(stu);
console.log(p);
</script>
效果: