<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// js 拷贝一个对象
// 深拷贝,目标对象与源对象相互之间切断联系
var obj1 = {name:"mumu",age:18,friend:["小红","小绿",{name:"小蓝",job:"teacher"}],say(){alert("你好我是"+this.name)}};
// 如果是数组需要递归,如果是对象需要递归,如果是值类型递归结束
function deepCopy(obj){
if(typeof obj=="object"&&obj!=null){
// 引用类型
var temp = null;
// 如果是数组
if(obj instanceof Array){
// 要返回的结果应该是个数组
temp = [];
// 递归拷贝数组
for(var i=0;i<obj.length;i++){
// temp[i] = obj[i] // x这样就是普通浅拷贝
temp[i] = deepCopy(obj[i]); // 递归拷贝
// 函数自己调用自己 返回的 拷贝obj[i]的结果
}
}else{
// 返回的结果就是对象
temp = {};
// 递归拷贝对象
for(var k in obj){
temp[k] = deepCopy(obj[k]);
}
}
// 返回结果
return temp;
}else{
// 非引用类型或者其他
return obj;
}
}
var obj2 = deepCopy(obj1);
</script>
</body>
</html>