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.
Advertisement
Answer
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 :
The Object.assign() method only copies enumerable and own properties from a source object to a target object
take this example
var o = {}; Object.defineProperty(o,'x',{enumerable: false,value : 15}); var ob={}; Object.assign(ob,o); console.log(o.x); // 15 console.log(ob.x); // undefined