This existence referential relationship var a=[1,2,3]; var b=a; B.push (4); alert (b);//1,2,3,4 alert (a);//1,2,3,4//This does not have a referential relationship//b re-assigned value will reopen an address var a=[1,2 , 3]; var b=a; b=[1,2,3,4]; alert (b);//1,2,3,4 alert (a);//1,2,3 var obj1={a:10}; var obj2=obj1; obj2.a=20; alert (obj1.a);//20; var obj1={a:10}; function copy (obj) {//Shallow copy var newojb={}; for (var attr in obj) {newojb[attr]=obj[attr]; } return NEWOJB; }
If the above is Var obj1={a:{b:10}} It is necessary to perform deep lookup function deepcopy (obj) {//Deep copy var newojb={}; if (typeof obj1! = "Object") {//Termination condition return obj1;//returns the original 10} for (var attr in obj) {newojb[attr]=deepcopy (obj1[attr]);//recursive} return NEWOJB; } var obj2=copy (obj); obj2.a=20; Alert (obj1.a)//10
Object reference (deep, shallow copy)