方法一
var obj = {
name:"Leon",
age:17,
hobby:function(){
let hb = "swimming";
return hb;
}
}
var newObj = {};
for(val in obj){
newObj[val] = obj[val];
}
console.log(newObj);
注意:
该方法只适用于简单类型的对象,不适用于对象里面嵌套对象;
即使拷贝成功,给新对象里的对象的变量重新赋值会改变原对象!
所以,对于复杂的对象(对象里面嵌套对象),我们要采用方法二;
方法二:递归
var obj = {
name:"Leon",
age:17,
hobby:function(){
let hb = "swimming";
return hb;
},
data:{
day:"Tus",
time:"morning"
},
arr:[
{name:"tt"},
{name:"yy"}
]
}
function deepCopy(obj){
let copyObj = Array.isArray(obj)?[]:{};
for(var key in obj){
copyObj[key] = typeof(obj[key])==="object"?deepCopy(obj[key]):obj[key];
}
console.log(copyObj==obj);//false
return copyObj;
}
console.log(deepCopy(obj))
该方法使用于任何对象
网友评论