<script type="text/javascript">
// 给每个对象定义一个深拷贝函数
var deepCopy=function() {
var t={};
for(var k in this){
//对于当前对象中的每个属性,判断其是否为引用类型
if(typeof this[k]==='object'){
t[k]=this[k].deepCopy();//如果是引用类型,执行深拷贝
}else{
t[k]=this[k];//如果不是,直接拷贝其属性,另外注意凡是给对象添加动态成员的时候,必须使用关联数组法。如:使用p['name'],而不是p.name,因为你不知道它的属性名是什么。附:引用对象的成员,1.点语法,2.关联数组法
}
}
return t;//返回深拷贝后的对象
}
var car={name:'Benz'};
car.deepCopy=deepCopy;//给car对象添加deepCopy方法
var p1={name:'Tom',age:19,car:car};
p1.deepCopy=deepCopy;//给p1对象添加deepCopy方法
var p2=p1.deepCopy();
p1.name='Json';
p1.age=20;
p1.car.name='Audi';
console.log(p1);
console.log(p2);
</script>