I just came across this concept of
var copy = Object.assign({}, originalObject);
which creates a copy of original object into the "copy
" object. However, my question is, does this way of cloning object create a deep copy or a shallow copy?
PS: The confusion is, if it creates a deep copy, then it would be the easiest way to clone an object.
For small
Data structures
I see thatJSON.stringify()
andJSON.parse()
work nice.It creates a shallow copy, according to this paragraph from MDN:
For the purposes of redux,
Object.assign()
is sufficient because the state of a redux app only contains immutable values (JSON).Forget about deep copy, even shallow copy isn't safe, if the object you're copying has a property with
enumerable
attribute set to false.MDN :
take this example
By using
Object.assign()
, you are actually doing Shallow Copy of your object. Whenever we do an operation like assigning one object to other, we actually perform a shallow copy, i.e. if OBJ1 is an object, modifying it through another object which is OBJ2 will reflect changes in OBJ1 too.