<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script>
//这是a和b是同一个对象的引用
// var a={age:1};
// var b=a;
// b.age=2;
// alert(a.age); //2
//这里a和b是不用对象的引用
// var a={age:1};
// var b=a;
// b={age:2};
// alert(a.age); //1 a和b引用内存地址不同
//对象浅copy(只能copy一层关系,多层次无法copy,多层次引用依然相同)
// var a={age:1,obj:{name:"aa"}};
// function copyObj(obj){
// var o={};
// for(var attr in obj){
// o[attr]=obj[attr];
// }
// return o;
// }
// var b=copyObj(a);
// b.obj.name="bb";
// b.age=2;
// alert(a.age); //1
// alert(a.obj.name); //bb 未完全copy
//对象深copy(彻底copy对象,引用地址完全不同)
var a={age:1,obj:{name:"aa"}};
function copyObj(obj){
if(typeof obj!="object"){
return obj;
}
var o={};
for(var attr in obj){
o[attr]=copyObj(obj[attr]);
}
return o;
}
var b=copyObj(a);
b.obj.name="bb";
alert(a.obj.name); //aa 对象引用完全不同
</script>
</head>
<body>
</body>
</html>