js的数据类型:
基本类型:number boolean string null undefined
引用类型: object(函数 array object)
1 var a = {w1:2,w2:3}
2 var a1= a;
3 alert(a1);//{w1:2,w2:3}
4 var a={x1:7,x2:8}
5 alert(a1);//{w1:2,w2:3} 上代码为浅复制,a1指向a的地址,第四行把a的地址变了,而a1指向的仍然是原来的地址,故值不变。
1 1 var a = {w1:2,w2:3}
2 2 var a1= a;
3 3 alert(a1);//{w1:2,w2:3}
4 4 a1.w1="邓";
5 5 alert(a);//{w1:"邓",w2:3}
上代码为浅复制,原地址的值变了。
1 var a = 3578;
2 var a1 = a;
3 alert(a1);//3578
4 a=8735;
5 alert(a1);//3578
上代码为深复制。
代码:
深复制:
function clone(obj){
2 var o=[];
3 if(obj.constructor== Array) {
4 o=obj.slice(0);
5 }else{
6 o={};
7 for(var i in obj){
8 o[i] = typeof obj[i] === "object" ? obj[i].clone() : obj[i];}
9 }
10 return o;
11
12 }
浅复制: