I am getting output is 5 but I was assuming 3. what is the logic behind and how can I make output 3.
const obj = {
  a: 1,
  b: 2,
  c: {
    p: 3
  }
}
const obj1 = { ...obj}
obj.c.p = 5
console.log(obj1.c.p)
I am getting output is 5 but I was assuming 3. what is the logic behind and how can I make output 3.
const obj = {
  a: 1,
  b: 2,
  c: {
    p: 3
  }
}
const obj1 = { ...obj}
obj.c.p = 5
console.log(obj1.c.p)
The above only clones the first level, so changing obj's deep attribute will change the reference in obj1
const obj = {
  a: 1,
  b: 2,
  c: { p: 3 }
};
const obj1 = { ...obj, c: {...obj.c} };
obj.c.p = 5;
console.log(obj1.c.p);
obj spreaded to obj1 but object in c property stays same, e.g. c is a same object.
Can deeply clone object like this
const obj1 = JSON.parse(JSON.stringify(obj))