so suppose i have a object which contain 2 values one x and other y
let point={x:100,y:200};
now i wld try to copy this object to a another object
let other=point;
if i change other array value it would changes the point array to like this
other.x=500;
console.log(point.x);
console.log(other.x);
that not what we want the reason behind this both variable referencing towards same memory address.
in c++ we have three options
1. we can pass variable by value that would create a new copy
2. by reference same as above
3. by pointer like reference by not automatic memory release after use you have to delete the variable
so how i do a deep copy in javascript so it can be applied to the complex structures here is my method for that
deep copy of a object
code below
let parentObject={
name:"manish",
sal:"9000000",
others:{
manager:"abc",
age:45,
what:{
arr:[1,2,3,4]
}
}
}
Object.prototype.deepCopy=function(x)
{
for(let [key,value] of Object.entries(this))
{
if(typeof value==="object")
{
x[key]=new Object();
value.deepCopy(x[key])
}else
{
x[key]=value;
}
}
return x;
}
var deepCopyObject=parentObject.deepCopy(new Object());
deepCopyObject.name="oops";
console.log(deepCopyObject);
console.log(parentObject);
as you see i changed deepCopyObject name propetry but its does not change the parentObject name
working link-->https://stackblitz.com/edit/myalgo
Comments
Post a Comment